Data-Science-For-Beginners 非关系型数据指南:从电子表格公式到 NoSQL 与 Cosmos DB 文档数据库
2026/9/14 7:43:18 网站建设 项目流程

Data-Science-For-Beginners 非关系型数据指南:从电子表格公式到 NoSQL 与 Cosmos DB 文档数据库

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

本文基于 Data-Science-For-Beginners 课程第 6 课(2-Working-With-Data/06-non-relational/README.md)编写,聚焦“数据不只是关系型数据库”这一主题:先用 Microsoft Excel 讲解电子表格的工作簿结构、公式与函数,再将 NoSQL 归纳为键值、图、列式、文档四大类型,并借助 Azure Cosmos DB 模拟器在本地创建、探索和查询文档数据库。读完后,你将能够用电子表格公式计算库存总值、区分四类 NoSQL 数据模型、在模拟器中执行 SQL 查询并上传 JSON 数据。

为什么数据不限于关系型数据库

前一课(05-relational-databases/README.md)围绕 SQL 与关系型数据库展开,而本课明确指出:数据的存储形态并不止于关系表。本课分两条线索展开:

  1. 电子表格(Spreadsheets):配置和上手成本最低的数据存储与探索方式,适合快速建表、计算与可视化;
  2. NoSQL:一组“非关系型”数据模型的统称,覆盖键值、图、列式与文档数据库。

课程在仓库中为该课配备了完整可操作的素材:

素材文件用途
InventoryExample.xltm库存管理电子表格模板,演示公式与函数
CocaColaCo.xlsx课后作业“Soda Profits”的数据文件
PersonsData.json用于上传到 Cosmos DB 模拟器Persons容器的示例文档集合
TwitterData.json实践挑战(Challenge)中要上传并查询的推文文档集合

电子表格基础:工作簿、工作表与单元格

电子表格是一种文件,存放在计算机、设备或云文件系统中;软件本身可以是浏览器端应用,也可以是安装在本地电脑上的应用程序。在 Excel 的术语体系中,这类文件被称为工作簿(workbook),本文后续沿用该称呼。

工作簿由一个或多个**工作表(worksheet)组成,每张工作表由底部标签页(tab)标识。工作表内部是由矩形单元格(cell)**构成的网格,单元格中存放实际数据。关键规则如下:

  • 一个单元格是一行与一列的交叉点
  • 列用字母标识(A、B、C……),行用数字标识(1、2、3……);
  • 部分电子表格会在最前面几行放置表头(header),用于描述每个单元格数据的含义。

用 InventoryExample 管理库存

仓库中的 InventoryExample.xltm 是一个格式化的库存模板(源自 Microsoft 官方模板),包含三个工作表,标签页分别为:

  • Inventory List(库存清单)
  • Inventory Pick List(拣货清单)
  • Bin Lookup(货位查找)

其中 Inventory List 工作表的第 4 行是表头,描述表头列下每个单元格数值的含义。

公式(Formulas):让单元格依赖其他单元格

当某个单元格的值需要依赖其他单元格的值来生成时,就要用到公式。库存清单追踪每件商品的成本,但若要得到整个库存的总价值,就需要逐行计算“数量 × 单价”:

  • 该工作表在 **Inventory Value(库存价值)**列使用公式,将 **QTY(数量)**列的值乘以 **COST(单价)**列的值,得到每件商品的库存价值;
  • 公式以等号=开头,后跟计算表达式或运算;
  • 双击或选中某个单元格即可查看其中的公式。

函数(Functions):预定义的公式

手动逐格相加求总和是繁琐的。Excel 提供了函数——预定义好的公式,用于对单元格值执行计算:

  • 函数需要参数(arguments),即完成计算所必需的输入值;
  • 当函数需要多个参数时,参数顺序必须正确,否则可能算不出正确的结果;
  • 模板示例使用SUM 函数,把 Inventory Value 列的所有值作为参数求和,总结果显示在第 3 行、B 列(即B3单元格)。

NoSQL:非关系型数据存储的四大类型

NoSQL 是一个伞形术语(umbrella term),涵盖存储非关系型数据的各种方式,可解读为 “non-SQL”“non-relational”(非关系型)或 “not only SQL”(不仅仅是 SQL)。这类数据库系统可归为四类:

1. 键值数据库(Key-Value)

键值数据库把唯一的键配对,键是与某个值相关联的唯一标识符。这些键值对借助**哈希表(hash table)和合适的哈希函数(hashing function)**进行存储与检索。

2. 图数据库(Graph)

图数据库描述数据中的关系,表现为一组节点(nodes)边(edges)

  • 节点代表实体,即真实世界中存在的事物,如学生、银行对账单;
  • 代表两个实体之间的关系;
  • 每个节点和每条边都可以携带属性(properties),提供关于它们各自的补充信息。

3. 列式数据库(Columnar)

列式数据存储像关系结构一样把数据组织为行与列,但每个列族(column family)是一个列的分组:同一列族下的数据彼此相关,可以作为单一单元整体检索或修改

4. 文档数据库(Document)

文档数据库建立在键值数据库的概念之上,由一系列**字段(fields)对象(objects)**构成。文档数据库的代表性实践——Azure Cosmos DB——是本课的重点,下一节将展开。

用 Cosmos DB 模拟器探索文档数据库

Cosmos DB 恰好符合 “Not Only SQL” 的定义:它的文档数据库使用 SQL 查询数据。第 5 课(05-relational-databases/README.md)讲过 SQL 基础,本课把这些查询知识直接迁移到文档数据库上。

文档长什么样

文档是字段与对象值的集合,字段描述对象值的含义。以下是一个 Cosmos DB 文档示例:

{ "firstname": "Eva", "age": 44, "id": "8c74a315-aebf-4a16-bb38-2430a9896ce5", "_rid": "bHwDAPQz8s0BAAAAAAAAAA==", "_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/", "_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"", "_attachments": "attachments/", "_ts": 1630544034 }
  • 业务上真正关心的是firstnameidage三个字段;
  • 其余以下划线开头的字段(_rid_self_etag_attachments_ts)都是Cosmos DB 自动生成的系统字段。

在模拟器中浏览数据

Cosmos DB 模拟器(Emulator)允许在本地电脑上创建和探索文档数据库,无需直接操作云端资源。官方提供 Windows 安装包;macOS 与 Linux 的运行方式可查阅 Cosmos DB 模拟器的官方文档(文档中给出了对应指引)。

模拟器启动后会打开一个浏览器窗口,其中的Explorer 视图用于浏览文档。如果跟着课程操作:

  1. 点击“Start with Sample”,生成一个名为SampleDB的示例数据库;
  2. 展开 SampleDB,可以看到一个名为Persons容器(container)
  3. 容器保存一组元素(items),即容器内的文档,Persons下有 4 个可逐个查看的文档。

用 SQL 查询文档数据

点击模拟器工具栏中从左数第二个按钮 “New SQL Query”即可打开查询面板:

  • SELECT * FROM c返回容器中的全部文档
  • 加上 WHERE 子句,找出所有年龄小于 40 岁的人:
SELECT * FROM c where c.age < 40

该查询返回两个文档,可以看到每个返回文档的age值都小于 40。

JSON 与文档:API 数据直通文档库

熟悉 JSON(JavaScript Object Notation)的人会注意到:文档的形态与 JSON 几乎一致。这一点有两层实践意义:

  1. 课程自带示例数据:本课目录下的 PersonsData.json 包含 6 条firstname+age记录(如 Christophe/32、Prema/20、Keisha/84 等),可通过模拟器中的Upload Item按钮上传到Persons容器;
  2. API 数据可直接入库:返回 JSON 的 API 数据通常可以直接转存到文档数据库。例如仓库中的 TwitterData.json 记录了从 Twitter API 拉取、再插入 Cosmos DB 的推文,其中的文档形如:
{ "created_at": "2021-08-31T19:03:01.000Z", "id": "1432780985872142341", "text": "Blank slate. Like this tweet if you've ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK", "_rid": "dhAmAIUsA4oHAAAAAAAAAA==", "_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/", "_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"", "_attachments": "attachments/", "_ts": 1630537000 }

该文档的业务字段是created_atidtext,下划线字段同样是 Cosmos DB 自动生成的。

实践挑战:上传 Twitter 数据并用 LIKE 查询

课程给出的挑战步骤如下(在模拟器中操作):

  1. 点击右上角的“New Container”按钮;
  2. 选择已有数据库(SampleDB),并为新容器创建一个容器 ID
  3. 将**分区键(partition key)**设置为/id
  4. 点击 OK(由于是小数据集且运行在本地,其余配置项可以忽略);
  5. 打开新容器,用Upload Item按钮上传 TwitterData.json。

完成上传后,尝试编写若干 SELECT 查询,找出text字段中包含 “Microsoft” 的文档。课程给出的提示是使用LIKE 关键字配合通配符(官方 Cosmos DB SQL 查询关键字文档有专门说明),例如按c.text LIKE '%Microsoft%'的思路编写条件。

课后作业:Soda Profits

本课的配套作业是 assignment.md 中的Soda Profits练习,基于 CocaColaCo.xlsx(该文件缺少部分计算,需要你自己补上):

  1. 计算 FY '15、'16、'17、'18 的毛利润(Gross Profit)
    • Gross Profit = Net Operating revenues - Cost of goods sold
  2. 计算所有毛利润的平均值,并尝试用函数完成:
    • Average = Sum of gross profits / 财政年度数量
    • 可参考 AVERAGE 函数的官方文档语法;
  3. 该文件虽为 Excel 格式,但应能在任意电子表格平台中编辑。

这组练习把本课的公式/函数知识与真实财务数据结合起来:先用公式逐行算差值,再用 AVERAGE 函数求均值,与 InventoryExample 中的 SUM 用法一脉相承。

小结

  • 电子表格以“工作簿—工作表—单元格”的层级组织数据,公式以=开头函数是带有序参数的预定义公式,二者可快速完成库存价值、利润等派生指标的计算;
  • NoSQL 的四种模型各有侧重:键值用哈希表存键值对、用节点和边表达实体关系、列式以列族为单位存取、文档以字段和对象组织数据;
  • Cosmos DB 属于 “Not Only SQL”:文档近似 JSON,但用 SQL 子集查询;借助模拟器即可在本地完成建库(Start with Sample)、浏览(Explorer/Items)、上传(Upload Item)与查询(New SQL Query)的完整闭环;
  • 返回 JSON 的 API 数据可以近乎零转换地进入文档数据库,这正是本课用 Twitter 数据做演示的原因。

课程同时建议延伸阅读:电子表格还有本课未覆盖的格式化与高级特性(可查阅 Microsoft 官方 Excel 文档与视频库);微软架构文档《Non-relational Data and NoSQL》系统梳理了各类非关系型数据的特征;Cosmos DB 作为云端的非关系型数据库,也能存储本课提到的其他 NoSQL 类型(可在 Microsoft Learn 的 Cosmos DB 学习路径中深入)。

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询