azure - ADF 获取属性 "status": "Succeeded" and IF for validation

标签 azure if-statement azure-data-factory

我有一个管道,可以从外部提取数据并作为暂存数据汇入 SQL Server 表中。使用 4 '复制数据' 获取原始数据的过程已成功。因为列太多(250列),所以我把它们分开了。 this is a pipeline 下一个要求是通过获取成功状态来验证 4 那些“复制数据”。 “复制数据” 的输出如下所示

    {
    "dataRead": 4772214,
    "dataWritten": 106918,
    "sourcePeakConnections": 1,
    "sinkPeakConnections": 1,
    "rowsRead": 1366,
    "rowsCopied": 1366,
    "copyDuration": 8,
    "throughput": 582.546,
    "errors": [],
    "effectiveIntegrationRuntime": "AutoResolveIntegrationRuntime (Southeast Asia)",
    "usedDataIntegrationUnits": 4,
    "billingReference": {
        "activityType": "DataMovement",
        "billableDuration": [
            {
                "meterType": "AzureIR",
                "duration": 0.016666666666666666,
                "unit": "DIUHours"
            }
        ]
    },
    "usedParallelCopies": 1,
    "executionDetails": [
        {
            "source": {
                "type": "RestService"
            },
            "sink": {
                "type": "AzureSqlDatabase",
                "region": "Southeast Asia"
            },
            "status": "Succeeded",
            "start": "2022-04-13T07:16:48.5905628Z",
            "duration": 8,
            "usedDataIntegrationUnits": 4,
            "usedParallelCopies": 1,
            "profile": {
                "queue": {
                    "status": "Completed",
                    "duration": 4
                },
                "transfer": {
                    "status": "Completed",
                    "duration": 4,
                    "details": {
                        "readingFromSource": {
                            "type": "RestService",
                            "workingDuration": 1,
                            "timeToFirstByte": 1
                        },
                        "writingToSink": {
                            "type": "AzureSqlDatabase",
                            "workingDuration": 0
                        }
                    }
                }
            },
            "detailedDurations": {
                "queuingDuration": 4,
                "timeToFirstByte": 1,
                "transferDuration": 3
            }
        }
    ],
    "dataConsistencyVerification": {
        "VerificationResult": "NotVerified"
    },
    "durationInQueue": {
        "integrationRuntimeQueue": 0
    }
}

现在,我想要获取"status": "Succeeded"(JSON 输出)以在'IF Condition' 中进行验证。因此,我在动态内容中设置变量的值 @activity('copy_data_Kobo_MBS').output

enter image description here

但是当它运行时,我收到错误

The variable 'copy_Kobo_MBS' of type 'Boolean' cannot be initialized or updated with value of type 'Object'. The variable 'copy_Kobo_MBS' only supports values of types 'Boolean'.

问题是如何获取 "status": "Succeeded" (JSON 输出)作为“变量”值?因此“IF条件”可以检查“变量”值。

最佳答案

您可以使用以下表达式从复制数据事件中提取运行状态。由于您的变量是 bool 类型,因此您需要使用返回 truefalse@equals() 函数来计算它。

@equals(activity('Copy data1').output.executionDetails[0].status,'Succeeded')

据了解,当您连接复制事件以在成功时设置变量事件时,您不必从复制数据事件中提取状态。

这意味着您的设置变量事件仅在复制数据事件成功运行时运行。

另外,请注意

  1. 如果复制数据事件(或任何其他事件)失败,则在上一个事件成功输出的基础上添加的事件将不会被执行。正在运行。

  2. 如果您将多个事件输出连接到单个事件,则该事件仅在所有连接的事件运行时运行。

  3. 您可以在失败或完成时添加事件以进一步处理。

示例:

在下面的片段中,由于复制数据不成功,设置变量事件未运行。并且 Wait2 事件未运行,因为所有输入事件未成功运行。

enter image description here

关于azure - ADF 获取属性 "status": "Succeeded" and IF for validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71855510/

相关文章:

azure - 如何使用 contains 将一个数组的属性值与另一个数组逻辑应用表达式进行比较?

if 语句条件中的逗号分隔参数

linux - 如果日期字符串为 + 或 - 5 分钟,则

azure - 将具有专用终结点的 Azure 数据工厂连接到具有同一 VNet 中的另一个专用终结点的存储帐户

wcf - 使用 Microsoft.Data.Services.Client.dll 而不是 System.Data.Services.Client.dll 会导致 Azure.StorageClient 出现问题

azure - 如何引用存储和 key 保管库更新 Azure 函数应用程序的应用程序设置? - 带有二头肌和模块

azure - 如何访问部署在Azure上的VS代码

if-statement - 为什么一个变量与多个值的不相等检查总是返回 true?

azure - 如何强制 Azure 数据工厂数据流使用 Databricks

azure - 来自 Azure 的具有已知 IP(或范围)的服务请求