【问题标题】:how to get Iteration Id for items in array using Azure Data factory如何使用 Azure 数据工厂获取数组中项目的迭代 ID
【发布时间】:2019-11-14 09:21:50
【问题描述】:

我有一个简单的 ADF 管道,其中包含 1 个查找(加载要迁移的表的名称)和一个 ForEach 活动(其中包含复制活动和一个用于在 BQ 中加载数据的函数 App)。我想获取迭代 ID 并将其发送到 Azure 函数应用程序。 假设查找返回一个包含三个表(A、B、C)的 JSON,我想在 foreach 循环中获取迭代 id,例如 A 为 1,B 为 2,C 为 3。

对此的任何帮助将不胜感激。

【问题讨论】:

  • 嗨,Syed,您能否发布您之前尝试过的代码以使其正常工作。

标签: azure-data-factory


【解决方案1】:

我同意这是一个常见的要求,但似乎没有直接的方法可以在 for-each 活动中获取数组索引。不过,你可以试试我的 AzureFunctionActivity 小技巧。

Step1: 在某个blob存储路径中创建一个文本文件(命名为index.txt)并在其中存储1值(用于将其用作数组索引)

Step2: 在 For-each Activity 中,使用 LookUp Activity 读取 index.txt 的值。第一次是1

Step3: 之后,执行 Azure Function Activity 来改变值 --plus 1. 这样,下一次是2

Step4:当你完成 For-each Activity 后,你可以通过 Azure Function Activity 将值重置为0

无需创建 2 个 azure 函数,只需 1 个。您可以传递 boolean 参数来区分此调用是用于重置还是加号。

【讨论】:

  • 嗨,Jay,这似乎是一个不错的解决方案,但它很长,并且需要一个函数 App 来进行计算。
【解决方案2】:

在我要从中选择源和目标表/数据库的查找表中。我为查找活动从中检索数据的源表中的每一行添加了另一列,其迭代器编号为 1、2、3、4。

然后在 Azure 数据工厂中,我在 Foreach 循环中读取了该列。对于每个 Source 和 Destination 表,我都有一个自制的 Iterator 并将其用于我的目的。它对我来说非常好。

【讨论】:

  • @paddy 你可以在这里看到自定义解决方案
  • 好吧...您添加了另一列...是的,正如您所说,我的解决方案会产生额外的消耗,但不会更改源数据。您可以标记自己以结束此案。还是谢谢你的分享~
猜你喜欢
  • 2021-01-25
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2021-12-05
  • 1970-01-01
相关资源
最近更新 更多