【问题标题】:How can I pass output from a filter activity directly to a copy activity in ADF?如何将过滤器活动的输出直接传递到 ADF 中的复制活动?
【发布时间】:2021-10-16 19:27:10
【问题描述】:

我每天有 4000 个文件,每个文件平均大小为 30Kb,位于我们本地文件系统上的一个文件夹中。我想对文件名中的详细信息应用条件逻辑(几个和/或条件),仅将符合条件的文件移动到另一个文件夹中。我已经尝试将获取源文件夹中所有文件的元数据活动与过滤器活动链接起来,该过滤器活动将条件逻辑与具有嵌入式复制活动的每个活动一起应用。这可行,但处理文件需要数小时。在调试中运行管道时,输出窗口将列出作为行项目复制的每个文件。我已将 for each 中的批次计数设置增加到 50,但并没有改善。有没有办法将过滤器活动直接链接到复制活动而不使用每个活动?即将过滤器中的集合直接传递到副本的源中。或者,我们的一些其他管道仅使用指向源文件夹的复制活动,我们使用 * 和 ? 的组合使用简单的正则表达式配置其文件过滤器设置,这非常快。但是,在这个特定场景中,我的条件逻辑更加复杂,我需要将每个文件名中的属性与值进行比较,以决定是否应该移动文件。文件过滤器设置允许动态内容,因此我可以完全删除过滤器活动,将副本指向源文件夹并将条件逻辑放在文件过滤器的动态内容区域中,但是我如何获得对文件名的引用来进行条件检查?

【问题讨论】:

  • 您能否提供更多关于您希望对源文件应用哪些特定过滤器的信息? ADF 复制活动允许我们使用通配符路径从源中过滤文件。例如,*.csv 允许您只读取 .csv 文件并忽略其他文件。同样,您可以在 If 条件活动表达式中添加其他必需的条件。请参考stackoverflow.com/questions/63055604/…,如果这有帮助,请告诉我。
  • 请求您重新构建您的问题,以便通过一些用例场景和示例数据更好地了解问题。

标签: copy azure-data-factory azure-data-factory-pipeline filefilter


【解决方案1】:

这是一种解决方案:

  1. 将数组输出作为文本写入 Blob 存储(或任何位置)中的 .json。以下是实现该功能的步骤:

复制数据源:

复制数据接收器:

  1. 将 json(数组输出)写入具有您要复制的文件名称的文本文件。

复制活动源(将其从 JSON 获取到 .txt):

Sink 将是 Blob 中的 .txt 文件。

  1. 在您的主要复制活动中使用该文本文件并使用以下设置:

这应该会复制您在过滤器活动中确定的所有文件。

我意识到这是一种解决方法,但确实是您所要求的唯一解决方案。否则无法将筛选活动直接链接到复制活动。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2020-06-18
    • 1970-01-01
    • 2021-12-31
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多