如何在Azure数据工厂中动态复制多个文件

问题描述 投票:0回答:1

管道的主要座右铭是将数据从 Source 复制到 Sink。但是 Source 及其各自的 Sink 的数量不会恒定,这意味着它可能每天都会增加或减少。如何建立这个管道?

我知道使用称为“映射表”的东西可以实现这一点。

我在Azure数据工厂中找不到任何这样的东西。 这个“映射表”是什么?这是复制活动中的一个概念还是某个选项还是什么?

azure hadoop azure-data-factory azure-databricks data-engineering
1个回答
0
投票

一般来说,如果源表和接收器表列出已知并且每个源和接收器中的列名称相同,则在 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 动态复制文件。

© www.soinside.com 2019 - 2024. All rights reserved.