Azure 数据工厂 select 属性 "status":来自上一个 activity 的 "Succeeded"
Azure Data Factory select property "status": "Succeeded" from previous activity
使用 Data Factory V2 我正在尝试实现从一个 Azure SQL 数据库到另一个数据库的数据流复制。
我想执行一个有条件的 activity If Condition
依赖于之前管道执行的活动是否成功,但是在表达式中要包含在 activity 中If Condition
我无法 select 输出 属性 "status": "Succeeded"
.
在 If Condition
的 activity 之前,我有两个数据复制活动。
我在流程中添加了 If Condition
activity,因为复制数据后要执行的任务取决于 所有 复制活动的成功。
即
如果所有复制活动都正确执行,则将执行 true 条件。如果只有一个副本 activity 成功而另一个失败则执行 false 条件
每次复制活动的输出如下:
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
activity 构建了我的表达式:
@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.'."
}
但是即使有指导我也无法解决问题。
有谁知道如何解决这个问题?谢谢
为清楚起见,ADF 中的流量控制不是这样工作的。
您不需要查询之前形状的结果,而是根据结果更改 Activity 连接器以进行分支。
连接两个活动后,右击line/arrow。然后你可以选择 运行 下一个 Activity on Success, Failure, Completion or Skip.
您可以在其前后 link 任意数量的活动。
从输出数据来看,executionDetails
是一个数组,只有一个项目包含一个对象。所以表达式应该是:activity('Copy_Activity1').output.executionDetails[0].status
.
如果您的要求是在所有复制活动成功完成后运行一些活动,Johns-305 的回答实际上是正确的。
这是包含更多详细信息的示例。复制活动是activity 1
和activity 2
,其他到运行的活动是activity 3
和activity 4
,activity 3
和[=13之间没有依赖关系=].这些活动应如下图所示链接。请注意,activity 3
和 activity 4
不会 运行 两次,它们只会在 之后 运行 activity 1
和 activity 2
成功。
使用 Data Factory V2 我正在尝试实现从一个 Azure SQL 数据库到另一个数据库的数据流复制。
我想执行一个有条件的 activity If Condition
依赖于之前管道执行的活动是否成功,但是在表达式中要包含在 activity 中If Condition
我无法 select 输出 属性 "status": "Succeeded"
.
在 If Condition
的 activity 之前,我有两个数据复制活动。
我在流程中添加了 If Condition
activity,因为复制数据后要执行的任务取决于 所有 复制活动的成功。
即
如果所有复制活动都正确执行,则将执行 true 条件。如果只有一个副本 activity 成功而另一个失败则执行 false 条件
每次复制活动的输出如下:
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
activity 构建了我的表达式:
@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.'."
}
但是即使有指导我也无法解决问题。
有谁知道如何解决这个问题?谢谢
为清楚起见,ADF 中的流量控制不是这样工作的。
您不需要查询之前形状的结果,而是根据结果更改 Activity 连接器以进行分支。
连接两个活动后,右击line/arrow。然后你可以选择 运行 下一个 Activity on Success, Failure, Completion or Skip.
您可以在其前后 link 任意数量的活动。
从输出数据来看,executionDetails
是一个数组,只有一个项目包含一个对象。所以表达式应该是:activity('Copy_Activity1').output.executionDetails[0].status
.
如果您的要求是在所有复制活动成功完成后运行一些活动,Johns-305 的回答实际上是正确的。
这是包含更多详细信息的示例。复制活动是activity 1
和activity 2
,其他到运行的活动是activity 3
和activity 4
,activity 3
和[=13之间没有依赖关系=].这些活动应如下图所示链接。请注意,activity 3
和 activity 4
不会 运行 两次,它们只会在 之后 运行 activity 1
和 activity 2
成功。