管道的主要座右铭是将数据从 Source 复制到 Sink。但是 Source 及其各自的 Sink 的数量不会恒定,这意味着它可能每天都会增加或减少。如何建立这个管道?
我知道使用称为“映射表”的东西可以实现这一点。
我在Azure数据工厂中找不到任何这样的东西。 这个“映射表”是什么?这是复制活动中的一个概念还是某个选项还是什么?
一般来说,如果源表和接收器表列出已知并且每个源和接收器中的列名称相同,则在 for 循环内使用单个复制活动即可完成这项工作。由于列名称相同,如果我们将投影留空,复制活动将动态映射每个源和接收器的模式。
但是如果列名不同,那么我们需要为每次迭代构建映射。为此,将使用映射表。 映射表是指,包含
source file name
和target file name
、source file column names
和target file column names
信息的表。
在每次管道运行中,我们需要截断此表并将源表和目标表信息插入其中,如下例所示。
来源名称 | 目标名称 | 源_列 | 目标列 |
---|---|---|---|
文件1 | 目标1 | 身份证、姓名、年龄、标记 | id、名字、年龄、标记 |
文件2 | 目标2 | 主题_名称,no_passed,no_failed | 名称、通过、失败 |
插入后,将此表作为对象数组获取,并使用 for 循环对其进行迭代。
使用复制活动源和数据集文件名的数据集参数,并在 for 循环内传递
@item().source_name
和 @item().target_name
。
然后,要构建映射 JSON,请通过传递当前源名称和目标名称来使用存储过程,并使用查找活动或存储过程活动调用该过程。
浏览 @Shubham Nandanwar 的博客,了解如何创建存储过程。
从活动输出传递输出映射 JSON 以复制活动动态内容表达式。
在此过程中,在每次迭代中,存储过程将提供映射 JSON,复制活动将使用该 JSON 动态复制文件。