azure - Azure 数据工厂中的数据流与 foreach 循环集成

标签 azure azure-data-factory

我们有一个数据湖容器,包含三个文件夹 a、b、c。每个文件夹有3个文件a1,a2,a3,b1,b2,b3,c1,C2,c3。现在我们需要设计一个管道,它将动态地从文件夹增量加载到与源文件同名的 blob stroarge。增量负载是我在数据流中实现的。我们还有其他数据流依赖性,因此我们不能使用复制事件,而只能使用数据流。我无法将获取元数据事件与数据流集成,我希望获得一些帮助。

我们有一个数据湖容器,包含三个文件夹 a、b、c。每个文件夹有3个 我尝试使用参数和变量。但没有得到所需的输出。我使用了获取元数据子项。然后是 foreach 循环。在 foreach 内部,我尝试使用另一个 fireaeach 来获取文件。我使用了附加变量来附加数据。我已经实现了数据流中单个表的更新插入逻辑。如果我将第二个 get matadata 事件输出(在 foreach 内)传递给数据流,它不接受。我面临的主要问题是将数据流与数据集级别的 foreach 集成。因为数据流的数据集将依赖于获取元数据的输出。

最佳答案

Azure 数据工厂中不可能嵌套 for-each。解决方法是在每个事件中使用执行管道。要将元数据事件的输出传递给数据流,请创建数据流参数并将值传递给该参数。我尝试在我的环境中重现这个场景,下面是方法。

外部管道:

  • 获取元数据事件已执行,并且数据集文件路径中仅给出容器名称。在字段列表中选择+新建,并添加子项参数。此事件将提供容器中存在的所有目录的列表。

enter image description here

  • 对于每个事件都会进行,并在项目中给出 GetMetadata 事件的输出。 @activity('获取元数据1').output.childItems

enter image description here

  • 在 for-each 事件内添加执行管道事件。
  • 系统会创建一个新的子管道,并在该管道中创建一个名为 FolderName 的参数。
  • 子管道名称在执行管道事件中给出。参数值以 @item().name 形式给出,以将目录名称作为输入传递到子管道。

enter image description here

子管道:

  • 在子管道中,进行另一个获取元数据事件,并在数据集文件路径中给出容器名称,对于文件夹,创建数据集参数并传递管道参数FolderName 的值。 @pipeline().parameters.FolderName

  • 子项被选为字段列表中的参数。此事件将提供目录中可用文件的列表。

enter image description here

  • 然后添加 for-each 事件,并在项目中给出元数据事件的输出。 @activity('Get_Metadata_inner').output.childItems

  • 在 for-each 内部添加数据流。

数据流

  • 在数据流中,创建名为文件名的参数。 enter image description here

  • 在源数据集中,为文件名和文件夹名创建数据集参数,分别为 fileNamefolderName

gif51

  • 然后将所有其他转换添加到数据流中。

  • 在接收器转换的接收器数据集中,创建文件夹的数据集参数,并且数据集中的文件名留空。

enter image description here

  • 文件名在接收器设置中给出。值是数据流参数$filename.

enter image description here

  • 在子管道中,数据流事件设置如下图所示。 文件名:@item().name folderName(源参数和接收器参数):@pipeline().parameters.FolderName

enter image description here

  • 在“参数”选项卡中,文件名值以 @item().name 形式给出 enter image description here

  • 在此重现中,进行了简单的选择转换。这可以扩展到数据流中的任何转换。通过这种方式,我们可以将值传递给数据流。

关于azure - Azure 数据工厂中的数据流与 foreach 循环集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74728080/

相关文章:

powershell - 无法删除所有 Azure 网站连接字符串

sql-server - mssql特殊字符编码问题

asp.net - VSTS CI 在部署时使 Azure 应用服务脱机

azure - 具有全局参数的数据工厂 foreach

azure - 如何使用 Powershell 对 Azure 订阅执行非交互式 MFA 登录

azure - 如何仅将特定列从 SQL 表复制到 Azure 数据湖存储

azure - 是否可以导出 Azure 数据工厂中自托管 IR 上的事件日志?

Azure DevOps管道: Create a text file with the current build number

同一 VNET 上的 AZURE VM 无法 ping 通 3389 以外的端口

azure - 在 Azure SQL 数据流任务中映射 JSON 中的列