首页 > 解决方案 > Azure 数据工厂选择属性“状态”:来自先前活动的“成功”

问题描述

使用 Data Factory V2,我正在尝试实现从一个 Azure SQL 数据库到另一个数据库的数据流复制。

我想执行一个有条件的活动If Condition取决于管道执行的先前活动的成功,但是在要包含在活动中的表达式中If Condition我无法选择输出属性"status": "Succeeded"

在活动之前If Condition我有两个数据复制活动。

我在流程中添加了一个If Condition活动,因为复制数据后要执行的任务取决于所有复制活动的成功。

IE

如果所有复制活动都正确执行,则将执行真实条件。如果只有一个复制活动成功而另一个失败,则执行错误条件

每个副本活动的输出如下:

Output
{
    "dataRead": 213156,
    "dataWritten": 213156,
    "rowsRead": 3554,
    "rowsCopied": 3554,
    "copyDuration": 4,
    "throughput": 52.04,
    "errors": [],
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (West Europe)",
    "usedDataIntegrationUnits": 4,
    "usedParallelCopies": 1,
    "executionDetails": [
        {
            "source": {
                "type": "AzureSqlDatabase"
            },
            "sink": {
                "type": "AzureSqlDatabase"
            },
            "status": "Succeeded",
            "start": "2018-10-02T13:42:37.7396813Z",
            "duration": 4,
            "usedDataIntegrationUnits": 4,
            "usedParallelCopies": 1,
            "detailedDurations": {
                "queuingDuration": 3,
                "preCopyScriptDuration": 0,
                "timeToFirstByte": 0,
                "transferDuration": 1
            }
        }
    ]
}

我为If Condition这样的活动构建了我的表达方式:

@and(equals(activity('Copy_Activity1').output.executionDetails[3],'Succeeded'), equals(activity('Copy_Activity2').output.executionDetails[3],'Succeeded'))

但他给了我以下错误:

"error": {
    "code": "InvalidTemplate",
    "message": "Unable to process template language expressions in action 'If Condition1' inputs at line '1' and column '1294': 'The template language expression 'and(equals(activity('Copy_Item_Budget_Name').output.executionDetails[3],'Succeeded'), equals(activity('Copy_Item_Budget_Entry').output.executionDetails[3],'Succeeded'))' cannot be evaluated because array index '3' is outside bounds (0, 0) of array. Please see https://aka.ms/logicexpressions for usage details.'."
}

但即使有指南我也无法解决问题。

有谁知道如何解决这个问题?谢谢

标签: azureif-statementazure-data-factoryazure-data-factory-2

解决方案


从输出数据来看,executionDetails是一个数组,其中只有一个项目包含一个对象。所以表达式应该是:activity('Copy_Activity1').output.executionDetails[0].status.


推荐阅读