模块 2:使用数据工厂中的数据流转换数据
该模块大约需要 25 分钟来创建数据流、应用转换,并将原始数据从 Bronze 表移动到 Gold Lakehouse 表。
将上一模块中的原始数据加载到 Bronze Lakehouse 表中后,现在可以准备该数据,并通过将其与包含每个供应商及其在特定某日内行程折扣的另一个表组合来扩充这些数据。 此最终 Gold Lakehouse 表已加载并可供使用。
数据流中的概要步骤如下:
- 从模块 1:使用数据工厂创建管道复制活动创建的 Lakehouse 表获取原始数据。
- 转换从 Lakehouse 表导入的数据。
- 连接到包含折扣数据的 CSV 文件。
- 转换折扣数据。
- 合并行程和折扣数据。
- 将输出查询加载到 Gold Lakehouse 表中。
从 Lakehouse 表获取数据
在“新建数据流”菜单中,依次选择“获取数据”、“更多...”。
搜索并选择 Lakehouse 连接器。
此时将显示“连接到数据源”对话框,并基于当前登录的用户自动创建新连接。 选择下一步。
显示选择数据对话。 使用导航窗格查找在上一模块中为目标创建的 Lakehouse,然后选择 Tutorial_Lakehouse 数据表。
(可选) 在画布上填充数据后,可以设置 列配置文件 信息,因为这对于数据探查很有用。 根据它,可以应用正确的转换,并针对正确的数据值进行目标设置。
为此,请从功能区窗格中选择“选项”,然后选择“列配置文件”下的前三个选项,然后选择 确定”。
转换从 Lakehouse 导入的数据
选择第二列 IpepPickupDatetime 列标题中的数据类型图标以显示下拉菜单,并从菜单中选择数据类型,将列从“日期/时间”类型转换为“日期”类型。
(可选) 在功能区的“主页”选项卡上,从“管理列”组中选择“选择列”选项。
(可选) 在“选择列”对话框中,取消选择此处列出的某些列,然后选择“确定”。
- lpepDropoffDatetime
- puLocationId
- doLocationId
- pickupLatitude
- dropoffLongitude
- rateCodeID
选择 storeAndFwdFlag 列的筛选器和排序下拉菜单。 (如果看到“列表可能不完整”警告,请选择“加载更多”以查看所有数据。)
选择“Y”以仅显示应用了折扣的行,然后选择“确定”。
选择“IpepPickupDatetime”列排序和筛选下拉菜单,然后选择“日期筛选器”,然后选择为“日期”和“日期/时间”类型提供的“介于...”筛选器。
在“筛选行”对话中,选择 2015 年 1 月 1 日到 2015 年 1 月 31 日之间,然后选择“确定”。
连接到包含折扣数据的 CSV 文件
现在,行程数据已经就绪,我们要加载的数据包含每天的折扣和 VendorID,并在与行程数据合并之前准备好这些数据。
在数据流编辑器菜单中的“开始”选项卡中,选择“获取数据”选项,然后选择“文本/CSV”。
在“连接到数据源”对话中,提供以下详细信息:
- 文件路径或 URL -
https://raw.githubusercontent.com/ekote/azure-architect/master/Generated-NYC-Taxi-Green-Discounts.csv
- 身份验证类型 - 匿名
然后,选择“下一步”。
- 文件路径或 URL -
在“预览文件数据”对话框中,选择“创建”。
转换折扣数据
查看数据时,我们看到标题似乎在第一行中。 通过选择预览网格区域左上角的表格上下文菜单,选择“将第一行用作标题”,将其提升为标题。
注意
提升标题后,可以看到在数据流编辑器顶部的“已应用步骤”窗格中添加了一个新步骤,该步骤已添加到列的数据类型。
右键单击“VendorID”列,然后从显示的上下文菜单中选择“取消透视其他列”选项。 这使你可以将列转换为属性值对,其中列会成为行。
取消透视表后,双击“属性”和“值”列并将“属性”更改为“日期”,将“值”更改为“折扣”来重命名这些列。
通过选择列名称左侧的数据类型菜单并选择“日期”来更改“日期”列的数据类型。
选择“折扣”列,然后选择菜单上的“转换”选项卡。 选择“数字列”,然后从子菜单中选择“标准数字转换”,然后选择“除法”。
在“除法”对话框中,输入值 100。
合并行程和折扣数据
下一步是将这两个表合并为单个表,该表具有应用于行程的折扣和调整后的总计。
首先,切换“关系图视图”按钮,以便可以查看这两个查询。
选择 nyc_taxi 查询,然后在“开始”选项卡上,依次选择“合并”菜单、“合并查询”、“将查询合并为新查询”。
在“合并”对话中,从“合并右表”下拉列表中选择“Generated-NYC-Taxi-Green-Discounts”,然后选择对话框右上角的“灯泡”图标,查看两个表之间列的建议映射。
选择每个建议的列映射,一次一个,映射两个表中的 VendorID 和“日期”列。 添加这两个映射后,匹配的列标题在每个表中突出显示。
将显示一条消息,要求你允许合并来自多个数据源的数据以查看结果。 在合并对话中选择“确定”。
在表区域中,最初会看到一条警告,指出“评估已取消,因为合并来自多个源的数据可能会显示一个源到另一个源的数据。 如果可以显示数据,请选择“继续”。选择“继续”以显示合并的数据。
请注意,在关系图视图中创建了新查询的方式,显示新合并查询与之前创建的两个查询的关系。 查看编辑器的“表”窗格,滚动到“合并查询列”列表的右侧,以查看存在具有表值的新列。 这是“生成的纽约市出租车绿色折扣”列,其类型为 [表]。 在列标题中,有一个图标,其中两个箭头方向相反,使你可以从表中选择列。 取消选择“折扣”之外的所有列,然后选择“确定”。
由于折扣值现在位于行级别,我们可以创建一个新列来计算折扣后的总金额。 为此,请选择编辑器顶部的“添加列”选项卡,然后从“常规”组中选择“自定义列”。
在“自定义列”对话中,可以使用 Power Query 公式语言(也称为 M) 来定义应如何计算新列。 输入 TotalAfterDiscount 为“新建列名称”,为“数据类型”选择“货币”,并为“自定义列公式”提供以下 M 表达式:
如果 [totalAmount] > 0 则 [totalAmount] * ( 1 -[Discount] ) 否则 [totalAmount]
然后选择“确定”。
选择新创建的 TotalAfterDiscount 列,然后选择编辑器窗口顶部的“转换”选项卡。 在“数字”列组中,选择“舍入”下拉列表,然后选择“舍入...”。
在 “舍入”对话,为小数位数输入 2,然后选择“确定”。
将 IpepPickupDatetime 的数据类型从“日期/时间”更改为“日期/时间”。
最后,从编辑器右侧展开“查询设置”窗格(如果尚未展开),并将查询从“合并”重命名为“输出”。
将输出查询加载到 Lakehouse 中的表
输出查询现已完全准备好并准备好输出数据后,我们可以定义查询的输出目标。
选择之前创建的 输出 合并查询。 然后在编辑器中选择“主页”选项卡,从“查询”分组中选择“添加数据目标”,以选择 Lakehouse 目标。
在“ 连接到数据目标 ”对话中,应已选择连接。 选择“下一步”继续操作。
在“选择目标 ”对话中,浏览到要在其中加载数据的 Lakehouse,并将新表命名为 nyc_taxi_with_discounts,然后再次选择“下一步”。
在“选择目标设置”对话框中,保留默认的 替换 更新方法,检查列正确映射,然后选择“保存设置”。
返回主编辑器窗口,确认在“输出”表的“查询设置”窗格中看到输出目标,然后选择“发布”。
重要
在工作区中创建第一个 Dataflow Gen2 时,将会预配湖屋和仓库项及其相关的 SQL 分析终结点和语义模型。 这些项由工作区中的所有数据流共享,并且是运行 Dataflow Gen2 所必需的,不应将其删除,但不会由用户直接使用。 这些项是 Dataflow Gen2 的实现详细信息。 这些项在工作区中不可见,但在其他体验(例如 Notebook、SQL 终结点、湖屋和仓库 体验)中可能是可访问的。 可以通过名称中的前缀来识别项。 项的前缀为“DataflowsStaging”。
(可选) 在工作区页上,可以通过选择在选择行后显示的数据流名称右侧的省略号并选择“属性”来重命名数据流。
选择数据流行后选择刷新图标,完成后,应会看到在 数据目标 设置中按配置创建的新 Lakehouse 表。
检查 Lakehouse 以查看加载到其中的新表。
相关内容
在有关在 Microsoft Fabric 中使用数据工厂进行首次数据集成的端到端教程的第二个模块中,你已了解如何:
- 创建新数据流 Gen2。
- 导入和转换示例数据。
- 导入和转换 text/CSV 数据。
- 将两个数据源中的数据合并到新查询中。
- 转换数据并在查询中生成新列。
- 为查询配置输出目标源。
- 重命名并刷新新的数据流。
请继续学习下一部分,以集成数据管道。