【问题标题】:Azure Data Factory - Event Triggers on Files In Multiple FoldersAzure 数据工厂 - 多个文件夹中文件的事件触发器
【发布时间】:2021-12-01 20:43:22
【问题描述】:

我们正在基于基于事件的触发器调用 ADF 管道。 有没有办法仅在文件到达这两个子文件夹时触发此管道

例如 父文件夹 -- 子文件夹1 -- ChildFolder2

现在我们只想在新文件到达这两个文件夹时触发我们的管道。即 ChildFolder1 和 ChildFolder2

【问题讨论】:

  • 我的直觉认为这是不可能的,因为每个事件都是独立的,并且触发器与单个事件相关联。文件是否相关/一致命名?您可以使用 GetMetadata 查找第二个文件是否存在吗?如果没有,那么我相信您将需要一个外部机制来跟踪这些事件。几个逻辑应用程序和一个 SQL 数据库将是解决问题的简单方法。

标签: azure azure-data-factory


【解决方案1】:

没有开箱即用的方法。我可以想到以下替代方案。

第一种方法

您可以在 ChildFolder2 设置触发器

您可以使用“查找活动”或“获取元数据活动”来获取具有 ChildFolder1 中名称的文件 - 查看该文件是否在 ChildFolder1 中创建。

如果您想在一段时间后查看,请延迟 10 到 15 分钟。您可以利用 Wait 活动

现在,如果文件存在 - 那么您可以继续执行管道的其余部分。如果文件不是在 Childfolder1 中创建的 - 那么您可以在不执行任何活动的情况下结束管道。

当在 childfolder2 中创建文件时,最终会触发管道。执行流程根据 If 活动和子文件夹 1 中文件的存在而改变。

第二种方法

如果您没有文件名 - 并且想要动态创建文件。

与上述相同 - 您可以在 childfolder2 中设置事件触发器。

在管道执行中,您根据文件管道启动的时间戳过滤文件。这有点棘手。

您为 childfolder1 执行 GetMetada 并使用 foreach 和 if 条件对其进行过滤。 (get the latest added file in a folder [Azure Data Factory])

如果有任何文件,则使用其余活动执行管道,否则您可以结束管道执行。

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 2021-05-24
    • 2021-06-26
    • 1970-01-01
    • 2023-02-06
    • 2022-10-14
    • 1970-01-01
    • 2021-05-24
    • 2019-12-12
    相关资源
    最近更新 更多