【问题标题】:Azure Data Factory: Storage event trigger only on new filesAzure 数据工厂:仅在新文件上触发存储事件
【发布时间】:2021-06-26 09:15:39
【问题描述】:

我在 Azure Blob 存储中有以下文件夹结构:

container/
  dataset1/
    2021-01-01/
      file_01.parquet
      file_02.parquet
    2021-01-02/
      file_01.parquet
      file_02.parquet
      file_03.parquet
  dataset2/
    2021-01-01/
      file_01.parquet
    2021-01-02/
      file_01.parquet
      file_02.parquet
  .
  .
  . etc...

我有每个数据集文件夹的管道。管道迭代“日期”文件夹中的文件,处理它们并将结果输出到其他地方。每个管道都有如下定义的输入数据集路径:container/dataset/。这工作正常。当我触发管道时,它会遍历所有文件。

现在我想自动化管道,以便在将新数据添加到数据集文件夹时触发它(它始终位于名称中带有日期的文件夹中)。我想我可以使用存储事件触发器来做到这一点,但它是为每个“日期”文件夹运行管道还是只在添加的文件夹上运行?

【问题讨论】:

  • 嘿@kilipukki,以下答案是否解决了您的疑问?

标签: azure azure-data-factory azure-blob-storage


【解决方案1】:

事件触发器基于 Blob 路径开始和结束。 因此,如果您的触发器的 Blob Path Begins as dataset1/ :那么在该数据集中上传的任何新文件都会触发 ADF 管道。

管道内文件的消耗完全由数据集参数管理。 所以理想情况下,事件触发器和输入数据集值都是独立的,完全取决于我们如何设计它。

【讨论】:

    【解决方案2】:

    以下是它的工作流程:

    当向存储帐户添加新项目时,匹配存储事件触发器(blob 路径以 / 结尾)。一条消息被发布到事件研磨,然后该消息被转发到数据工厂。这会触发管道。如果您的管道旨在从所有文件夹中获取数据 - 那么是的 - 您将从完整数据集中获取数据。

    或者,如果您只想复制特定文件,则可以配置数据集属性复制文件夹和复制文件。

    默认情况下,存储事件触发器将 blob 的文件夹路径和文件名捕获到属性 @triggerBody().folderPath 和 @triggerBody().fileName

    您可以将其映射到管道参数并如上所述使用。

    【讨论】:

    • 好的,我想我明白了。因此,如果我只想在包含新文件的文件夹上运行管道,我可以定义管道参数,例如path 并将值从 @triggerBody().folderPath 映射到它。然后我可以创建数据流参数,例如dataFlowPath 并将 @pipeline().parameters.path 映射到它并在数据流通配符路径源选项中使用 dataFlowPath 参数?
    • 是的,你可以这样做
    • 如何参数化触发器的其他属性,如容器名称、azure 订阅等
    猜你喜欢
    • 2021-05-24
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2016-08-13
    • 2020-03-14
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多