首页 文章

如何链接Azure数据工厂管道

提问于
浏览
4

我有一个包含多个管道的数据工厂,每个管道有大约20个复制活动,用于在两个存储帐户之间复制azure表 .

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

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

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

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

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

3 回答

  • 0

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

    Option 1

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

    "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

    Option 2

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

    例如,使用 Get-AzureRmDataFactoryActivityWindow 检查第一个管道状态 . 然后,如果完成使用 Set-AzureRmDataFactorySliceStatus 更新第二个管道数据集就绪 .

    要么

    使用 Suspend-AzureRmDataFactoryPipeline 在管道级别执行此操作

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

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

    希望这可以帮助 .

  • 2

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

    请注意,设置选项卡上的'Advanced'位与'Advanced'免费编码选项卡不同 . 见屏幕截图
    enter image description here

  • 2

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

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

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

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

相关问题