如何使用 ADF 复制在 blob 存储中隔离文件 activity

how to segregate files in a blob storage using ADF copy activity

我在 ADF 中有一个副本数据 activity,我想根据文件类型将文件隔离到不同的容器中。

例如。 容器 A - .jpeg、.png 容器 B - .csv、.xml 和 .doc

我最初的想法是使用 'if condition' 和 'or' 语句,但看起来我的方法行不通。 如果您能提供一些意见,我将不胜感激。

您应该使用 GetMetadata activity 首先获取需要首先传递给 CopyData activity 的所有文件类型,后者复制到容器 A,然后添加 next Getmetadata activity 以获取复制到容器 B 的下一个 copydata activity 的文件类型。 因此,您的 ADF 管道可能类似于 GetMetaData1 -> Copydata1 -> GetMetaData2 -> Copydata2。参考如何使用 GetMetaData activity 在此 article, and documentation

复制 activity 本身允许多个 wildcard path,因此您可以在数据源中使用它,请参阅 this

首先,从源容器中获取列表文件并在Foreachactivity中循环每个文件以使用[=11=检查扩展名] 并根据条件复制文件到各自的容器中。

我的源容器中有以下文件。

在 ADF 中:

  1. 使用 Get metadata activity,从源容器中获取所有文件的列表。

  1. 获取元数据的输出activity:

  1. 将输出列表传递给Foreach activity.

@activity('Get Metadata1').output.childitems

  1. Foreach activity 中,添加 If Condition activity 以根据扩展名分隔文件。

@or(contains(item().name, '.xml'),contains(item().name, '.csv'))

  1. 如果条件为true,复制当前文件到container1.

  1. 如果条件returnsfalse,将当前文件复制到container2中Falseactivity.

运行 管道后容器中的文件。

容器 1:

容器 2: