结合Lookup Activity与If Activity构建的Pipeline执行失败,求排查方案
Azure Data Factory管道执行失败排查与解决
核心问题根源
你的emp.csv文件中,filename列的所有取值都带有前导空格(比如实际存储的是" a"而非"a"),Lookup Activity读取数据时会完整保留这些空格字符。
当前你设置的If条件表达式@equals(item().filename,'anubhav'),是将带空格的字段值与无空格的字符串'anubhav'做对比,结果永远为false,进而引发两个问题:
- 本该跳过的
anubhav条目会执行数据导入操作,而存储中不存在带空格的" anubhav"文件,触发报错 - 本该导入的
a和b条目,实际传入的文件名是带空格的" a"、" b",同样找不到对应文件,导致管道失败
解决方法
方法1:直接清理源文件空格
修改emp.csv,移除filename列所有值的前导/尾随空格,修改后内容如下:
emp_id,filename 1,a 2,b 3,anubhav
方法2:在表达式中处理空格(无需修改源文件)
如果无法修改源文件,可在两个关键位置添加trim()函数去除空格:
- If条件表达式修改为:
@equals(trim(item().filename),'anubhav') - 数据导入操作的文件名参数修改为:
确保传入的文件名与存储中的实际文件名一致。@trim(item().filename)
额外验证
确认Foreach Activity的Items配置为@activity('你的Lookup活动名称').output.value,保证正确遍历Lookup返回的所有数据条目。
内容的提问来源于stack exchange,提问作者Anubhav
相关产品推荐
相关产品推荐

