此模块需要大约 25 分钟才能完成。 创建数据流、应用转换,并将原始数据从 铜 层数据表移到 黄金 数据层表中。
将原始数据从最后一个模块加载到铜湖屋表后,现在可以对其进行扩充。 您将把它与另一个表格结合,该表格包含各供应商在特定一天的折扣及其行程。 然后,此最终的 Gold Lakehouse 表将加载并准备好使用。
数据流中的高级步骤包括:
- 从模块 1 中的复制活动创建的 Lakehouse 表获取原始数据:使用数据工厂创建管道。
- 转换从 Lakehouse 表导入的数据。
- 连接到包含折扣数据的 CSV 文件。
- 转换折扣数据。
- 合并行程和折扣数据。
- 将输出查询加载到 Gold Lakehouse 表中。
先决条件
从 Lakehouse 表获取数据
在边栏中,选择工作区,选择 “新建项”,然后选择 “数据流 Gen2 ”以创建新的数据流 Gen2。
从新的数据流菜单中,选择“ 获取数据”,然后选择 “更多...”。
搜索并选择 Lakehouse 连接器。
此时会显示 “连接到数据源 ”对话框,并根据当前登录的用户自动创建一个新连接。 选择“下一步”。
将显示 “选择数据 ”对话框。 使用导航窗格查找在上一模块中为目标创建的 Lakehouse,然后选择 Tutorial_Lakehouse 数据表。 然后选择 创建。
(可选) 一旦画布填充了数据,您可以设置 列概要 信息,因为这对于数据分析非常有用。 可以应用正确的转换,并根据它定位正确的数据值。
为此,请从功能区窗格中选择 “选项 ”,然后在 “列配置文件”下选择前三个选项,然后选择“ 确定”。
转换从 Lakehouse 导入的数据
选择第二列 IpepPickupDatetime 列标题中的数据类型图标以显示下拉菜单,并从菜单中选择数据类型,以将列从 日期/时间 转换为 日期 类型。
(可选)在功能区的“开始”选项卡上,从“管理列”组中选择“选择列”选项。
(可选) 在“ 选择列 ”对话框中,取消选择此处列出的某些列,然后选择“ 确定”。
- lpepDropoffDatetime
- puLocationId
- doLocationId
- 取货纬度
- 投放点经度
- 费率代码ID
选择 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 列,然后从显示的上下文菜单中选择“ 取消透视其他列”选项。 这样,就可以将列转换为属性值对,其中列成为行。
在表格取消透视后,双击属性列和值列,将属性更名为日期,将值更名为折扣。
通过选择列名左侧的数据类型菜单并选择 “日期”来更改 Date 列的数据类型。
选择“ 折扣 ”列,然后选择菜单上的“ 转换 ”选项卡。 选择 “数字”列,然后从子菜单中选择 “标准 数字转换”,然后选择“ 除法”。
在 “划分 ”对话框中,输入值 100。
合并行程和折扣数据
下一步是将这两个表合并为一个表,其中包含应应用于行程的折扣和调整后的总计。
首先,切换窗口右下角的 “关系图视图 ”按钮,以便可以看到这两个查询。
选择原始数据查询(在我们的示例中称作“Bronze”),然后在开始选项卡上选择合并菜单,并选择合并查询,再选择将查询合并为新查询。
在“合并”对话框中,选择左外部合并,然后从“用于合并的右侧表”下拉列表中选择Generated-NYC-Taxi-Green-Discounts,然后选择对话框右上角的“灯泡”图标,以查看两个表之间列的建议映射。
选择建议的映射来映射这两个表中的 VendorID 和日期列。 添加这两个映射后,每个表中都会突出显示匹配的列标题。
将显示一条消息,要求你允许合并来自多个数据源的数据以查看结果。 在“合并”对话框中选择“确定”。
在表区域中,你最初会看到一条警告,指出“有关数据隐私的信息是必需的”。选择 “继续 ”以解决警告。
对于本教程,请选择忽略隐私级别检查此文档,因为这是没有敏感信息的示例数据。 对于自己的数据源,请设置适当的隐私级别来保护敏感数据。
选择“保存”。
请注意如何在关系图视图中创建新查询,其中显示了新合并查询与之前创建的两个查询之间的关系。 查看编辑器的表窗格,滚动到合并查询列列表右侧,以查看存在具有表值的新列。 这是“自动生成的 NYC 出租车绿色折扣”列,其类型为 [表]。 在列标题中,有一个图标,有两个箭头朝相反的方向移动,允许你从表中选择列。 取消选择所有列,只保留折扣,然后选择确定。
现在,使用行级别的折扣值,我们可以创建一个新列来计算折扣后的总金额。 为此,请选择编辑器顶部的“添加列”选项卡,然后从“常规”组中选择“自定义”列。
在 “自定义列 ”对话框中,可以使用 Power Query 公式语言(也称为 M) 来定义新列的计算方式。 输入TotalAfterDiscount作为新列名称,选择Currency作为数据类型,并为自定义列公式提供以下 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”。
(可选) 在工作区页上,可以通过选择行后显示的数据流名称右侧的省略号并选择 “设置”来重命名数据流。 在此示例中,我们将它重命名为 nyc_taxi_with_discounts。
选择“ 更多选项 ”省略号下的数据流的刷新图标,完成后,应会看到在 数据目标 设置中配置的新 Lakehouse 表。
查看 Lakehouse,查看已加载的新表。
后续步骤
继续到下一部分以集成您的处理流程。