我尝试使用两个 forEach 活动来迭代文件夹的子文件夹,并使用参数来获取子文件夹的元数据。我有 forEach1 和 forEach2 及其自己的项目数组。在第二个 for 循环中,我需要在 Metada 活动中组合两个 for 循环的 item() 来访问我的数据集,例如 @item1()@item2()。这可能吗?
不允许嵌套 foreach 活动。但是您可以在 foreach 活动中使用执行管道活动。在嵌套管道中,您可以有另一个 foreach。
这是可能的,但第二个 ForEach 活动需要位于第一个活动内,而不是管道中的另一个活动。
正如您现在所拥有的,第一个 ForEach 将运行直到完成,然后第二个 ForEach 将启动,并且您无法访问第一个 ForEach 中的项目。
希望这有帮助!
我重现了这个问题。请参阅下面的详细解释。在 RAW 容器中,我有一个主文件夹“manager”,其中包含一些“.txt”文件,在“manager”文件夹内,我有几个子文件夹“employee1”、“employee2”、“employee3”等。在子文件夹内,我有几个'.txt' 文件,例如。
范围:将文件从主文件夹和子文件夹移动到不同的容器“Culated”
第 1 步: 由于 ADF 不支持嵌套的 For Each 活动,因此我们需要有 2 个管道(主管道和子管道)。在主管道中添加“获取元数据”活动,读取主文件夹中存在的文件和文件夹。将参数添加为“子项目”以便读取所有项目。
第 2 步: 添加 2 个过滤器活动。第一个过滤器活动是过滤文件,第二个过滤器活动是过滤文件夹。
项目:
@activity('Get Metadata1').output.childItems
读取txt文件的条件:
@and(equals(item().type,'File'),endswith(item().name,'.txt'))
读取文件夹的条件:
@equals(item().type,'Folder')
第 3 步: 将“For Each”活动添加到 Filter Activity 的输出以迭代 txt 文件,并在“For Each”活动内添加“Copy”活动,将文件从原始容器复制到 Curated 容器.
对于每个设置:
@activity('Filter1').output.value
添加源和接收器设置。 复制活动源设置:
第 4 步: 通过添加“获取元数据”活动来创建子管道以读取子文件夹,并将“获取元数据”活动的输出连接到“对于每个”以迭代子文件夹中存在的文件。
第 5 步: 将“对于每个”活动添加到第二个筛选器活动的输出以迭代子文件夹。在“For Each”活动内添加“执行管道”活动以迭代子文件夹。
整体主管道设计:
希望以下步骤有助于了解如何在 ADF 中添加嵌套的“For Each”。