ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

非关系型数据实战:从电子表格公式到 NoSQL 文档数据库(Data Science for Beginners 第 6 课)

非关系型数据实战:从电子表格公式到 NoSQL 文档数据库(Data Science for Beginners 第 6 课) 非关系型数据实战从电子表格公式到 NoSQL 文档数据库Data Science for Beginners 第 6 课【免费下载链接】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 课程“Working with Data”模块的核心一课系统讲解关系型数据库之外的两类数据载体电子表格与NoSQL 数据库。你将掌握工作簿/工作表/单元格的基本结构、公式与函数的用法并在此基础上深入 NoSQL 的四大分类键值、图、列族、文档最终通过Azure Cosmos DB 模拟器完成从建库、导入 JSON 数据到编写 SQL 查询的完整本地实操。文中所有示例与数据文件均来自本仓库2-Working-With-Data/06-non-relational目录可直接对照练习。一、电子表格最轻量的数据存储与分析工具电子表格之所以成为数据存储和探索的流行工具是因为它上手门槛低、启动成本小。本课示例以 Microsoft Excel 演示但绝大多数电子表格软件Google Sheets、WPS、LibreOffice Calc 等的组件名称与操作步骤都大同小异。1.1 核心概念工作簿、工作表与单元格一个电子表格文件Spreadsheet可以在计算机、移动设备或云文件系统上访问软件本身可能是浏览器版也可能需要安装为应用程序。在 Excel 中这类文件被称为工作簿Workbook本课后续统一使用该术语。一个工作簿包含一个或多个工作表Worksheet每个工作表通过**选项卡Tab**标识。工作表内部由矩形区域——**单元格Cell**组成数据就存放在单元格中单元格是行与列的交叉点列用字母标识A、B、C…行用数字标识1、2、3…因此每个单元格有唯一的地址例如第 3 行第 B 列记为B3部分表格会在前几行设置表头Header用来描述下方各列单元格中数据的含义。本仓库中的示例文件 InventoryExample.xltm 是一个带格式的库存管理表来自 Microsoft Templates它包含三个工作表选项卡分别名为“Inventory List”库存清单、“Inventory Pick List”拣货清单和“Bin Lookup”货位查询。其中 Inventory List 工作表的第 4 行是表头描述对应列每个单元格的取值含义。1.2 公式让单元格之间产生依赖关系很多时候一个单元格的值依赖其他单元格计算而来。例如库存清单追踪了每件商品的成本但如果想知道整个库存的总价值该怎么办这时就需要公式Formula——公式对单元格数据执行运算。在本例的库存清单中Inventory Value库存价值列就使用了公式用 QTY数量表头下的单元格乘以COST成本表头下的单元格算出每件商品的价值。操作要点双击或选中单元格即可看到其背后的公式公式一律以等号开头后面紧跟计算或运算表达式例如某行第 D 列的价值公式形如B5*C5具体行列以实际文件为准意为“数量 × 成本”。1.3 函数预定义的高效计算要得到库存总价值可以再写一个公式把 Inventory Value 列的所有值累加起来。手动逐个单元格相加虽然可行但非常繁琐。Excel 为此提供了函数Function——执行计算的预定义公式。函数的使用有两个关键点函数需要参数Arguments参数是计算所需的值多参数必须按正确顺序列出顺序错误可能导致计算结果不正确。本例中使用的SUM函数以 Inventory Value 列的取值作为参数累加后把总额显示在第 3 行、第 B 列即单元格B3形如SUM(D5:D20)实际范围以文件为准。这类函数化的计算方式正是后续数据分析如 8 课的数据准备、9–13 课的数据可视化中做聚合运算的思维起点。二、NoSQL非关系型数据的四种分类NoSQL是“存储非关系型数据的不同方式”的总称其含义可解读为“non-SQL”非 SQL、“non-relational”非关系型或 “not only SQL”不仅仅是 SQL”。NoSQL 数据库系统大体可分为四种类型。2.1 键值数据库Key-Value键值数据库以键值对形式存储数据每个唯一键Unique Key是关联到某个值的唯一标识符。这些键值对通过**哈希表Hash Table**配合合适的哈希函数来组织存储因此查找复杂度低、读写速度快常用于缓存、会话管理等场景。典型实现如 Redis、Azure Cosmos DB 的键值 API。2.2 图数据库Graph图数据库用于描述数据之间的关系表示为**节点Node与边Edge**的集合节点代表一个实体Entity即现实世界中存在的事物例如一名学生或一张银行对账单边代表两个实体之间的关系节点和边都可以携带属性Properties提供关于该节点/边的附加信息。图数据库擅长处理社交网络、推荐系统等关系密集型场景。2.3 列族数据库Columnar列族Columnar数据存储与关系型结构类似同样按行和列组织数据但列被划分为若干“列族Column Family”同一列族下的所有数据彼此相关可以作为一个整体单元被检索或修改。典型实现如 Apache Cassandra、HBase适合大规模、稀疏数据的场景。2.4 文档数据库Document文档数据存储在键值存储的概念之上做了扩展由一系列**字段Fields与对象值Object Values**构成——字段描述对象值的含义。文档数据库的每个文档类似一个 JSON 对象可以嵌套结构schema 灵活。这正是下一节将用 Azure Cosmos DB 模拟器动手实践的类型。三、用 Azure Cosmos DB 模拟器实战文档数据库Cosmos DB 完全符合“Not Only SQL”的定义它的文档数据库依赖 SQL 来查询数据。上一课 关系型数据库基础 介绍的 SQL 语言基础知识在这里几乎可以直接复用。**Cosmos DB 模拟器Emulator**让你在本地计算机上创建和探索文档数据库无需云订阅。你可以为 Windows 下载安装模拟器macOS 与 Linux 用户则可参考官方文档中的运行方式。启动后模拟器会在浏览器窗口中打开其Explorer资源管理器视图用于浏览文档。3.1 文档长什么样文档是字段与对象值的集合字段描述对象值所代表的内容。以下是一个典型文档示例来自课程原文{ 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 自动生成分别对应资源 ID、资源自链接、实体标签、附件引用和时间戳一般无需手动维护。3.2 探索示例数据从 SampleDB 到 Persons 容器如果跟随操作请在模拟器界面点击“Start with Sample”以示例开始系统会生成名为SampleDB的示例数据库。展开 SampleDB会看到一个名为Persons的容器Container容器存放一组条目Items条目即容器内的文档展开Persons容器下的Items可以看到4 个示例文档。3.3 用 SQL 查询文档数据模拟器支持直接对文档数据执行 SQL 查询点击“New SQL Query”新建 SQL 查询按钮左侧起第二个按钮即可输入查询语句。查询 1取回容器内全部文档SELECT * FROM c查询 2加 WHERE 子句过滤找出年龄小于 40 的人SELECT * FROM c where c.age 40该查询返回两个文档注意每个返回文档的 age 值都小于 40。这里的c是文档的别名aliasc.age即访问文档的age字段——这与关系型数据库中的表别名用法一脉相承印证了“Not Only SQL”中 SQL 的复用价值。3.4 JSON 与文档API 数据直达数据库如果你熟悉 JavaScript Object NotationJSON会发现文档与 JSON 高度相似。本目录下的 PersonsData.json 包含额外的数据Christophe、Prema、Arthur、Zoe、Keisha、Jackie 六条记录每条含firstname与age字段可以通过模拟器中的Upload Item上传条目按钮上传到 Persons 容器中。绝大多数情况下返回 JSON 数据的 API 可以把响应直接存入文档数据库——无需额外建表或字段映射。下面是课程提供的另一个文档示例它来自 Microsoft Twitter 官方账号经由 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推文正文。四、动手挑战上传 Twitter 数据并完成 LIKE 查询课程附带一份 TwitterData.json其中包含 10 条真实的 Microsoft 官方推文数据字段为created_at、id、text。建议把它上传到 SampleDB 数据库的独立新容器中步骤如下点击右上角的“New Container”新建容器按钮选择已有数据库SampleDB为容器创建一个Container ID将**分区键Partition Key**设置为/id点击OK这是本地运行的小数据集其余设置可以忽略打开新建的容器用Upload Item按钮上传 TwitterData.json 文件。随后尝试运行几条 SELECT 查询找出text 字段中包含 “Microsoft”的文档。提示可以使用 Cosmos DB 的LIKE关键字配合通配符%例如SELECT * FROM c WHERE c.text LIKE %Microsoft%这一挑战完整串起了本课的核心能力建容器 → 设分区键 → 导入 JSON → SQL 模糊查询与后续课程中用 Python 处理数据第 7 课 Python 基础以及数据准备第 8 课数据准备形成互补的数据处理链条。五、作业Soda Profits 利润计算配套作业 Soda Profits 要求补全 CocaColaCo.xlsx 中缺失的计算计算 FY 15、16、17、18 的毛利润Gross Profit毛利润 净营业收入Net Operating revenues− 销售成本Cost of goods sold用函数计算所有毛利润的平均值平均值 毛利润之和 ÷ 财年数10可参考AVERAGE函数文档该文件是 Excel 格式但在任何电子表格平台Google Sheets、WPS 等中都可以编辑。六、复习与延伸学习本课没有覆盖电子表格的全部格式与功能如需深入学习 Excel微软官方提供了大量的文档与视频库想系统了解非关系型数据各类别的特征可参阅架构文档《Non-relational Data and NoSQL》Cosmos DB 作为云端非关系型数据库同样支持本课讨论的多种 NoSQL 类型可通过 Microsoft Learn 的《Work with NoSQL data in Azure Cosmos DB》路径进一步学习。总而言之本课从“人人都能上手”的电子表格出发递进到 NoSQL 的四大分类最后落到 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),仅供参考
返回列表