如何链接Azure数据工厂管道

时间:2017-05-25 14:26:11

标签: azure workflow azure-table-storage azure-data-factory

我有一个带有多个管道的数据工厂,每个管道有大约20个复制活动,可以在两个存储帐户之间复制azure表。

每个管道处理每个azure表的快照,因此我想顺序运行管道,以避免用旧数据覆盖最新数据的风险。

我知道将第一个管道输出作为第二个管道的输入,我们可以实现这一点。但由于我在管道中有很多活动,我不确定最后会完成哪些活动。

无论如何,我知道管道已经完成,或者管道完成状态无论如何都会触发下一个管道?

在活动中,inputs是一个数组。那么可以提供多个输入吗?如果是,所有输入将异步或一个接一个地运行?

在多个输入的上下文中,我已阅读有关调度依赖性的信息。那么外部输入可以作为调度依赖还是仅作为内部数据集?

3 个答案:

答案 0 :(得分:3)

这是一个旧的但我仍然遇到datafactory 2的问题所以如果有人来到这里寻找datafactory 2上的这个解决方案。 “等待完成”复选框设置隐藏在“高级”状态下。 “执行管道”活动的“设置”选项卡的一部分。只需检查它以获得所需的结果。

注意'高级'设置标签上的位与'高级'免费编码标签。请参见屏幕截图enter image description here

答案 1 :(得分:2)

我认为目前你有两个选择来解决这个问题。两者都不是真正理想的,但ADF中的任何内容都不是当前形式的理想选择!所以......

选项1

在第二个管道活动上执行时间片延迟偏移。如果不重新配置切片,延迟将更容易更改,并且可以添加到活动中。这不是事件驱动的,但会给你一点控制以避免重叠。

"policy": {
    "timeout": "1.00:00:00",
    "delay": "02:00:00",  // <<<< 2 hour delay
    "concurrency": 1,

检查此页面以获取有关这两个属性及其使用位置的更多信息:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-scheduling-and-execution

选项2

打破PowerShell并使用更高级别的东西来控制它。

例如,使用 Get-Azure Rm数据工厂活动窗口来检查第一个管道状态。然后,如果完全使用 Set-AzureRmDataFactorySliceStatus 将第二个管道数据集更新为准备就绪。

OR

使用暂停 - Azure Rm数据工厂管道

在管道级别执行此操作

有关ADF PowerShell cmdlet的详细信息,请访问:https://docs.microsoft.com/en-gb/powershell/module/azurerm.datafactories/Suspend-AzureRmDataFactoryPipeline?view=azurermps-4.0.0

正如我所说,这两个选项都不理想,你已经在你的问题中提到过数据集链接。

希望这有帮助。

答案 2 :(得分:0)

在该管道的所有输出数据集处于Ready状态(管道成功完成时发生)之后,管道完成。

此外,管道可以将来自多个管道的多个数据集作为输入(也是输出)。在这种情况下,只有在所有先前的管道成功完成后才会启动管道。如果您有更多管道的数据集作为输入,它们将异步运行,具体取决于它们的计划。

外部数据集(输入)充当调度依赖性,因为它们可以拥有自己的(可能是不同的)可用性。

在多个输入的上下文中,我已阅读有关调度依赖性的信息。那么外部输入可以作为调度依赖还是仅作为内部数据集?