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
允许您创建循环条件以定期检查特定操作的状态。以下是一些示例:
【讨论】:
以上是关于Azure 数据工厂:执行管道活动无法引用调用管道,需要循环行为的主要内容,如果未能解决你的问题,请参考以下文章