我目前正在努力使用Azure数据工厂v2如果活动总是因此错误消息而失败: enter image description here
我设计了两个独立的管道,一个从本地SQL Server获取数据的完整快照(1333条记录),然后将数据加载到Azure SQL数据库中,另一个只需要从相同的来源。
两个管道在独立执行时都能正常工作。
然后我决定将这两个管道包装到一个父管道中,它将执行此操作: 1。 执行LookUp活动以检查Azure SQL数据库中的目标表是否有任何记录,基本选择计数(Request_ID)作为record_count来自target_table - 活动正常,我可以预览返回的记录计数。
2。 将LookUp活动的输出传递给If活动,其条件是如果record_count = 0,则父管道将调用完全加载管道,否则父管道将调用delta加载管道。
这是实际的表达方式:
{@activity(' lookup_sites_record_count&#39)。output.firstRow.record_count} == 0"
每当我尝试执行此父管道时,它都会失败并显示上述消息"活动失败:活动失败,因为内部活动失败。"
内部活动(即满载和增量加载管道)在独立触发时工作正常。
我失踪了什么?
非常感谢提前:)。
mikhailg
下面的管道JSON定义:
{
"name": "pl_remedyreports_load_rs_sites",
"properties": {
"activities": [
{
"name": "lookup_sites_record_count",
"type": "Lookup",
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false
},
"typeProperties": {
"source": {
"type": "SqlSource",
"sqlReaderQuery": "Select Count(Request_ID) As record_count From mdp.RS_Sites;"
},
"dataset": {
"referenceName": "ds_azure_sql_db_sites",
"type": "DatasetReference"
}
}
},
{
"name": "If_check_site_record_count",
"type": "IfCondition",
"dependsOn": [
{
"activity": "lookup_sites_record_count",
"dependencyConditions": [
"Succeeded"
]
}
],
"typeProperties": {
"expression": {
"value": "{@activity('lookup_sites_record_count').output.firstRow.record_count}==0",
"type": "Expression"
},
"ifFalseActivities": [
{
"name": "pl_remedyreports_invoke_load_sites_inc",
"type": "ExecutePipeline",
"typeProperties": {
"pipeline": {
"referenceName": "pl_remedyreports_load_sites_inc",
"type": "PipelineReference"
}
}
}
],
"ifTrueActivities": [
{
"name": "pl_remedyreports_invoke_load_sites_full",
"type": "ExecutePipeline",
"typeProperties": {
"pipeline": {
"referenceName": "pl_remedyreports_load_sites_full",
"type": "PipelineReference"
}
}
}
]
}
}
],
"folder": {
"name": "Load Remedy Reference Data"
}
}
}
答案 0 :(得分:1)
你的表达应该是:
@equals(activity('lookup_sites_record_count').output.firstRow.record_count,0)