Azure 数据工厂:执行管道活动无法引用调用管道,需要循环行为

Posted

技术标签:

【中文标题】Azure 数据工厂:执行管道活动无法引用调用管道,需要循环行为【英文标题】:Azure Data Factory: Execute Pipeline activity cannot reference calling pipeline, cyclical behaviour required 【发布时间】:2021-10-19 15:56:38 【问题描述】:

我有许多需要循环的管道,具体取决于数据的可用性。如果数据不存在,请等待并重试。管道行为主要由数据库控制,该数据库捕获用于做出处理决策的日志。

我阅读了关于Execute Pipeline 活动的Microsoft documentation,其中指出

Execute Pipeline 活动允许数据工厂或 Synapse 管道来调用另一个管道。

虽然它没有明确说明这是不可能的。我试图从Pipe_A 引用Pipe_A,但在下拉列表中看不到管道。我需要解决这个限制。

约束

管道不能再次调用所有管道,只调用有问题的管道。前面的管道并行运行所有管道。 我不知道需要多少次迭代,也无法指定这个数量。 已尽最大努力实现了这种模式,应该继续这种模式。

想法

    创建一个可以被引用的中间管道。 这不好我需要为每个需要此行为的管道执行此操作,因为管道选择不允许动态内容。这种方法还会污染数据工厂工作区。 如果满足条件,在同一管道内等待后直接控制流向后。 这也不行If 活动不允许在与If 活动本身相同的上下文中表达流。 我曾考虑将此行为外部化到 Python 应用程序中,如果需要,该应用程序可以附加到 Azure 函数。应用程序将处理调度和等待。应用程序可以调用它需要的任何管道,并且本身可以由相关管道调用。这似乎很激烈! 最后,我发现了一个活动Until,它具有do while 行为。我可以将这些管道包装在Until 中,管道执行并完成并将数据库状态设置为“已完成”或无法完成并将状态设置为不完整并等待。然后表达式要么启动另一个执行,要么不启动。可以根据需要在过程中包含额外的条件逻辑,用于为Until 中的表达式使用的变量设置值。我需要每个管道一个变量。

认为想法 4 有道理,我想我还是会发布这个,以防人们发现这种方法的局限性和/或推荐一种方法。

【问题讨论】:

第四种方法对我来说似乎很完美。 【参考方案1】:

是的,完全同意All About BI,,它似乎在您的场景中最适合 ADF 活动是直到:

ADF 中的 Until 活动用作包装器和父组件 对于迭代,内部子活动包含以下块 要迭代的项目。那些内在小孩的结果 然后必须在父直到表达式中使用活动 确定是否需要再次迭代。或者,如果 管道可以维护

Until activity 的评估条件可能包括来自其他活动、管道参数或变量的输出。

当与Wait activity 结合使用时,Until activity 允许您创建循环条件以定期检查特定操作的状态。以下是一些示例:

检查数据库表是否已更新新行。 检查 SQL 作业是否完成。 检查是否已将任何新文件添加到特定的 文件夹。

【讨论】:

以上是关于Azure 数据工厂:执行管道活动无法引用调用管道,需要循环行为的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Azure 数据工厂中管道活动的集成运行时

如何使用 Azure 数据工厂管道创建容器?

Azure 数据工厂集成运行时将无法启动

Azure 数据工厂 - 删除活动时出错

如何从 Azure 数据工厂安全地调用 Azure 逻辑应用

如何基于 Azure 数据工厂中创建的 Blob 执行触发器?