繁体   English   中英

使用触发器中的 Azure 数据工厂复制数据活动映射

[英]Azure Data Factory Copy Data Activity Mapping in Using Triggers

我正在使用 ADF 创建管道以将 XML 文件中的数据复制到 SQL 数据库。 我希望在将 XML 文件上传到 Blob 存储时触发此管道。 因此,在这里我将使用一个带有输入数据集的参数。

现在,在我使用的 Copy Data 活动中,我希望能够定义映射。 当给出文件路径时,这通常很容易,但是,在这种情况下,正在使用参数的情况下,我该怎么做?

根据我收集的信息,映射可以定义为 JSON 模式并分配给活动,但是否有更简单的方法来做到这一点? 也许通过上传可以从中导入模式的演示文件?

当您想将 xml 文件加载到 sql DB 时,您正在使用分层源到表格接收器方法。

将数据从分层源复制到表格接收器时,复制活动支持以下功能:

  • 从对象和数组中提取数据。
  • 从数组中交叉应用多个具有相同模式的对象,在这种情况下,将一个 JSON 对象转换为表格结果中的多条记录。

您可以在数据工厂创作 UI 上定义此类映射:

  1. 在复制活动 -> 映射选项卡上,单击导入模式按钮以导入源模式和接收器模式。 由于数据工厂在导入模式时对前几个对象进行采样,如果有任何字段未显示,您可以将其添加到层次结构中的正确层 - 将鼠标悬停在现有字段名称上并选择添加节点、对象或数组。

  2. 选择要从中迭代和提取数据的数组。 它将自动填充为Collection reference 请注意,此类操作仅支持单个数组。

  3. 将所需的字段映射到下沉。 数据工厂自动为分层端确定相应的 JSON 路径。

注意:对于标记为集合引用的数组为空且选中复选框的记录,将跳过整个记录。

在这里,我在源代码中使用示例 XML 文件

在此处输入图片说明

如果您注意到这里我使用了一个数据集参数,我将分配从触发器获得的文件名值。 现在我已将它放在数据集连接中文件路径属性的文件名字段中。

在此处输入图片说明

接下来,我创建了一个管道参数来保存从触发器获得的输入,然后再将其分配给数据集参数。

在此处输入图片说明

创建存储事件触发器

在此处输入图片说明

单击继续,您会填写找到所有适用于触发条件的文件的预览

在此处输入图片说明

当您移至下一张幻灯片时,如果您创建了我们拥有的管道参数,您将在那里看到它们

在此处输入图片说明

根据您的需要填写值。 在此处查看可用的系统变量存储事件触发范围

现在,让我们转到复制数据活动,在这里您将找到数据集参数,为其分配管道参数值。

在此处输入图片说明

现在移动到复制活动中的接收器选项卡,因为您希望将源模式跟随到接收器中,最好的方法是选择自动创建表。

在此处输入图片说明

为此,您必须在接收器数据集中进行适当的更改。 现在,要配置接收器数据集,对于表选择编辑并手动输入服务器中不存在的表的名称,即将在接收器中提到的 sql server 中以该名称创建一个新表。 确保清除所有架构,因为您将在复制活动中获得源架构。

在此处输入图片说明

在此处输入图片说明

返回复制活动中的映射选项卡,单击导入架构并选择要复制到表的字段。 此外,您可以指定数据类型,并且需要集合引用。 参考: 参数化映射

您还可以切换到Advanced editor ,在这种情况下,您可以直接查看和编辑字段的 JSON 路径。 如果您选择在此视图中添加新映射,请指定 JSON 路径。

因此,当在存储中创建文件时,会触发 blob 创建事件并运行管道

在此处输入图片说明

您可以看到在 ktestsql 下创建的新表“dbo.NewTable”,它具有来自 xml 的数据作为行。在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM