【问题标题】:Azure Data Factory V2 logical ORAzure 数据工厂 V2 逻辑或
【发布时间】:2020-10-27 13:46:11
【问题描述】:

是否可以为 Azure 数据工厂 V2 管道活动创建逻辑 OR?例如,我们有两个复制活动,当其中任何一个活动失败时,数据工厂都应该调用 API。

【问题讨论】:

  • 您好 IgorRogachov,如果我的回答对您有帮助,您可以接受(标记)它作为答案。这对其他社区成员可能是有益的。谢谢。

标签: azure api azure-data-factory azure-data-factory-2


【解决方案1】:

是的,我们可以。

您可以添加If Condition 来创建逻辑管道。如果两次复制活动输出状态包含'failed',则调用API。

我们知道,每个激活的副本都有输出具有以下详细信息:

"executionDetails": [
        {
            "source": {
                "type": "AzureSqlDatabase",
                "region": "East US"
            },
            "sink": {
                "type": "AzureSqlDatabase",
                "region": "East US"
            },
            "status": "Succeeded",
            "start": "2020-07-08T05:37:33.9079553Z",
            "duration": 4,
            "usedDataIntegrationUnits": 4,
            "usedParallelCopies": 1,
            "profile": {
                "queue": {
                    "status": "Completed",
                    "duration": 2
                },
                "transfer": {
                    "status": "Completed",
                    "duration": 1,
                    "details": {
                        "readingFromSource": {
                            "type": "AzureSqlDatabase",
                            "workingDuration": 0,
                            "timeToFirstByte": 0
                        },
                        "writingToSink": {
                            "type": "AzureSqlDatabase",
                            "workingDuration": 0
                        }
                    }
                }
            },

我们可以将executionDetails:{"status": "Succeeded"} 设置为激活的 if 条件:

表达式:无论哪个actives失败,所有API:

@or(equals(activity('Copy data1').output.executionDetails.status,'Failed'),equals(activity('Copy data2').output.executionDetails.status,'Failed') )

如果条件为真,则添加真正的活动来调用API:

如果所有复制活动都“成功”(条件为假)并且我们不想做任何事情,我们不需要添加假活动。

希望这会有所帮助。

【讨论】:

【解决方案2】:

我不知道。当一个 Activity 有多个条件时,它们被视为 AND 条件,这意味着两个复制 Activity 都必须无法执行 Web Activity。

执行此操作的一种常见模式是创建一个封装逻辑以报告错误的管道,并从每个活动的失败中调用它,将错误输出捕获到管道参数。

希望这有帮助!

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2021-02-02
    • 2021-08-29
    相关资源
    最近更新 更多