实战指南——从电子表格到 Azure Cosmos DB 文档数据库)
Data Science for Beginners 第 6 课非关系型数据NoSQL实战指南——从电子表格到 Azure 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 单元的核心内容数据并非只存在于关系型数据库中本课带你从最熟悉的电子表格出发系统掌握工作簿、工作表、单元格、公式与函数进而理解 NoSQL 的四种存储类型键值、图、列族、文档并在 Azure Cosmos DB 模拟器中亲手创建容器、上传 JSON 文档并执行 SQL 查询。学完本课你将能独立完成从Excel 公式计算库存/毛利到在本地模拟器中对文档数据库做条件查询的完整实操链路。为什么需要关注非关系型数据关系型数据库以表—列—行为基石通过主键与外键在多张表之间建立关联适合管理结构规整、关系复杂的数据上一课 关系型数据库与 SQL 已详细讲解。但现实中的大量数据并不天然适合塞进二维表格推文、日志、JSON 接口返回、社交关系图谱……因此本课把视角转向非关系型数据non-relational data并聚焦两大实操载体电子表格Spreadsheets——作为进入数据世界的低门槛工具讲解其组成单元与公式/函数用法NoSQL 数据库——讲解其定义与四大分类并用 Azure Cosmos DB 模拟器完成端到端的建库、导入与查询。电子表格工作簿、工作表与单元格电子表格之所以流行是因为它启动成本极低无需预先定义 schema打开即可录入与探索数据。课程以 Microsoft Excel 演示但其中的概念与操作步骤在 Google Sheets 等主流表格软件中名称与流程基本一致。三个核心结构概念工作簿Workbook电子表格在 Excel 中的正式称谓本质是一个文件存放在本地计算机、移动设备或云文件系统中。本课后续统一使用工作簿一词。工作表Worksheet一个工作簿包含一张或多张工作表每张工作表通过底部标签页Tab区分。下图展示的是一个包含两个工作表的空工作簿其中 A1 单元格处于选中状态。单元格Cell工作表内承载实际数据的矩形区域是行与列的交点。列以字母标识A、B、C…行以数字编号1、2、3…因此单元格可用列字母行数字定位如 B3。许多表格还会在开头几行设置**表头header**来描述每列数据的含义。实战示例用 InventoryExample 管理库存课程使用微软官方模板库中一个聚焦库存的模板文件 InventoryExample.xltm 来串联电子表格的进阶用法。该工作簿包含三张工作表标签页分别为Inventory List库存清单Inventory Pick List拣货清单Bin Lookup库位查询其中 Inventory List 工作表的第 4 行是表头用于描述该列每个单元格的值。它逐项跟踪每件库存商品的成本列如 QTY数量与 COST成本。公式让单元格依赖其他单元格某些单元格的值依赖于其他单元格。例如要知道整个库存的总价值就需要逐项计算数量 × 成本。公式Formula就是作用于单元格数据的运算表达式本示例在 Inventory Value 列中用公式计算每件商品的价值将 QTY 表头下的数量与 COST 表头下的成本相乘。双击或选中单元格即可查看其公式注意所有公式都以等号开头后面跟具体的计算或操作。函数预定义的公式若要把 Inventory Value 列所有值相加得到总价值可以逐个单元格相加但既繁琐又易错。Excel 提供了函数Function即预定义好的公式用于对单元格值执行计算。函数需要参数argument即完成计算所必需的值当函数需要多个参数时必须按特定顺序书写否则可能算出错误结果。本示例使用SUM函数以 Inventory Value 列的取值作为参数汇总得到的总值显示在第 3 行 B 列即单元格B3。NoSQL 总览一个词四种数据库NoSQL是存储非关系型数据的多种方式的总称可以解读为三种含义non-SQL非 SQL、non-relational非关系型或not only SQL不仅是 SQL。这类数据库系统通常可归为四种类型。键值数据库Key-Value键值数据库将**唯一键key与值value配对键是关联到某个值的唯一标识符。这种配对通常借助哈希表hash table**与合适的哈希函数来存储与快速检索。图数据库Graph图数据库描述数据之间的关系表示为节点node与边edge的集合。节点代表现实世界中的实体如一名学生或一份银行对账单边代表两个实体之间的关系。每个节点和边都可以带属性property提供各自的补充信息例如人—兴趣—地点的关联图谱。列族数据库Columnar列族数据库像关系型结构一样按列和行组织数据但每一列会被划分为若干组称为列族column family。同一列族下的所有数据彼此相关可以作为一个整体被检索与更新。例如一个客户数据库可划分出 Identity身份与 Contact Info联系方式两个列族。文档数据库Document文档数据库建立在键值数据库的概念之上由一系列**字段field与对象object**组成——一个键对应一整份结构灵活的文档。下一节将以 Azure Cosmos DB 为例完整实践。文档数据库与 Azure Cosmos DB 模拟器Cosmos DB 完美契合Not Only SQL不仅是 SQL的定义它的文档数据库本身依赖 SQL 来查询数据。这意味着上一课 SQL 基础 学到的查询语法在这里可以直接复用。课程采用Cosmos DB 模拟器Emulator它允许你在本地电脑上免费创建和探索文档数据库无需连接云服务。文档长什么样文档document是字段与对象值的集合字段描述对象值的含义。课程给出的示例文档如下{ 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 }其中值得关注的是业务字段firstname、id与age其余以下划线开头的字段_rid、_self、_etag、_attachments、_ts均由 Cosmos DB 自动生成用于内部管理与并发控制无需手工填写。安装并启动模拟器Windows下载安装模拟器后即可直接运行macOS / Linux官方文档提供了在 macOS 与 Linux 上运行的方案需按对应系统的指引配置。启动后模拟器会打开一个浏览器窗口其中的Explorer资源管理器视图就是探索文档的主界面。探索示例数据SampleDB 与 Persons 容器跟随课程操作点击Start with Sample生成名为SampleDB的示例数据库。展开 SampleDB 后可以看到一个名为Persons的容器container。容器持有项目的集合集合中的项目即容器内的文档。在Items下可以逐个查看四份文档。用 SQL 查询文档数据点击工具栏左起第二个按钮新建 SQL Query即可对示例数据执行查询SELECT * FROM c—— 返回容器内全部文档加上条件子句查找所有年龄小于 40 的人SELECT * FROM c where c.age 40执行后返回两条文档可验证每条文档中age字段的值确实都小于 40。这与关系型 SQL 的语法一脉相承只是查询对象从表变成了容器中的文档集合。JSON 与文档从 API 到数据库熟悉 JavaScript Object NotationJSON的读者会发现文档结构与 JSON 高度相似。实际上绝大多数返回 JSON 的 API其数据都可以直接写入文档数据库存储。本目录提供了一份 PersonsData.json内含 6 条额外数据Christophe 32 岁、Prema 20 岁、Arthur 15 岁、Zoe 7 岁、Keisha 84 岁、Jackie 45 岁可通过Upload Item按钮上传到模拟器的 Persons 容器中扩充数据。课程还演示了从 Twitter API 拉取推文写入 Cosmos DB的真实场景文档结构如下{ created_at: 2021-08-31T19:03:01.000Z, id: 1432780985872142341, text: Blank slate. Like this tweet if youve 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_at发布时间、id推文 ID与text推文正文——正是这类半结构化数据让文档数据库成为日志、推文等场景的天然选择。 挑战导入 TwitterData.json 并用 LIKE 模糊查询仓库提供了 TwitterData.json内含 10 条取自微软官方 Twitter 账号的推文。课程建议将其导入 SampleDB 数据库下的独立新容器操作步骤如下点击右上角的新建容器按钮选择已有数据库SampleDB并为新容器设定一个容器 ID将**分区键partition key**设置为/id点击 OK数据集很小且运行在本地可忽略该界面中的其余配置项打开新容器用Upload Item按钮上传 TwitterData.json。导入完成后尝试编写几条 SELECT 查询找出text字段中包含单词 Microsoft 的文档。提示可以使用LIKE 关键字配合通配符%实现模糊匹配例如SELECT * FROM c WHERE c.text LIKE %Microsoft% 课后作业Soda Profits 汽水利润计算作业文件为仓库中的 CocaColaCo.xlsx该电子表格缺少部分计算你的任务是计算FY 15、16、17、18四个财年的毛利润Gross Profit毛利润 净营业收入Net Operating revenues - 销售成本Cost of goods sold使用函数计算所有毛利润的平均值平均值 各财年毛利润之和 ÷ 财年数10可参考 Excel 内置的AVERAGE函数完成这是 Excel 文件但应能在任意主流表格平台中编辑完成。这份作业与本课公式 函数的知识点一一对应是检验电子表格实战能力的绝佳练习。复习与延伸电子表格还有本课未覆盖的格式与高级特性Microsoft 提供了大量关于 Excel 的官方文档与视频教程可供继续学习架构层面的系统性资料非关系型数据与 NoSQL详细说明了各类非关系型数据的特征与适用场景建议结合本课四种类型对照阅读Cosmos DB 作为云端的非关系型数据库可以存储本课提到的多种 NoSQL 类型微软官方学习路径提供了完整的 NoSQL 数据实战模块。小结本课打通了两条能力线低门槛的电子表格工作簿/工作表/单元格 → 公式 → 函数配以库存管理实战与文档数据库NoSQL 四种类型 → Cosmos DB 模拟器建库 → SQL 条件查询 → JSON 数据导入。完成本课学习后再遇到结构化不够规整、却需要快速存取与查询的数据你已经有了一条从认识、存储到查询的完整解决路径而接下来 数据可视化 单元将带领你把这些数据变成有价值的图表。课后可以继续完成 Soda Profits 作业并用前测/后测问卷检验掌握程度。本课为 Data Science for Beginners 课程 20 节课中的第 6 课整个课程围绕数据科学全生命周期循序渐进适合从零开始系统学习。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考