ADF get 属性 "status": "Succeeded" 和 IF 进行验证
ADF get property "status": "Succeeded" and IF for validation
我有一个管道,可以从外部提取数据并作为分段汇入 SQL 服务器 table。使用 4 'Copy data'
获取原始数据的过程已经成功。因为列数太多(250列),所以我拆分了。
下一个要求通过获得成功状态来验证 4 那些 'Copy data'。 'Copy data'
的输出看起来像这样
{
"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
中设置了来自变量的值
但是当它 运行 时,我得到了错误
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 输出)作为 'Variable' 值?所以 'IF condition' 可以检查 'Variable' 值。
您可以使用以下表达式从 copy data
activity 中提取 运行 状态。由于您的变量是布尔类型,您需要使用 @equals() 函数对其进行评估,其中 returns true
或 false
.
@equals(activity('Copy data1').output.executionDetails[0].status,'Succeeded')
据了解,当您连接副本 activity 以在成功时设置变量 activity 时,您不必从副本数据 activity 中提取状态。
也就是说你的设置变量activity运行只有当你复制数据activity运行成功时才会
另外,请注意
如果 copy data
activity(或任何其他 activity)失败,则添加的活动之前的activity成功输出后不会是运行ning.
并且如果您将超过 1 个 activity 输出连接到单个 activity,当所有连接的活动 运行.
您可以在失败或完成时添加活动以进一步处理。
示例:
在下面的片段中,Set Variable
activity 不是 运行,因为复制数据不成功。并且 Wait2
activity 不是 运行 因为所有的输入活动都没有 运行 成功。
我有一个管道,可以从外部提取数据并作为分段汇入 SQL 服务器 table。使用 4 'Copy data'
获取原始数据的过程已经成功。因为列数太多(250列),所以我拆分了。 'Copy data'
的输出看起来像这样
{
"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
但是当它 运行 时,我得到了错误
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 输出)作为 'Variable' 值?所以 'IF condition' 可以检查 'Variable' 值。
您可以使用以下表达式从 copy data
activity 中提取 运行 状态。由于您的变量是布尔类型,您需要使用 @equals() 函数对其进行评估,其中 returns true
或 false
.
@equals(activity('Copy data1').output.executionDetails[0].status,'Succeeded')
据了解,当您连接副本 activity 以在成功时设置变量 activity 时,您不必从副本数据 activity 中提取状态。
也就是说你的设置变量activity运行只有当你复制数据activity运行成功时才会
另外,请注意
如果
copy data
activity(或任何其他 activity)失败,则添加的活动之前的activity成功输出后不会是运行ning.并且如果您将超过 1 个 activity 输出连接到单个 activity,当所有连接的活动 运行.
您可以在失败或完成时添加活动以进一步处理。
示例:
在下面的片段中,Set Variable
activity 不是 运行,因为复制数据不成功。并且 Wait2
activity 不是 运行 因为所有的输入活动都没有 运行 成功。