如何在Azure Data Factory的ForEach中向Lookup活动传递完整SQL语句
问题根因
语法报错由两个配置问题共同导致:
- 内部Lookup活动的SQL表达式额外包裹了不必要的单引号:从管道配置可以看到,内部Lookup的
sqlReaderQuery表达式写为'@{item().source_query}',外层的单引号会被直接拼接到最终执行的SQL语句中,导致SQL语法结构错误。 - 运行时返回的SQL语句前后存在
\r\n换行符和多余空白字符,也会干扰SQL解析。
修复步骤
1. 修改内部Lookup的SQL表达式
去掉表达式外层的单引号,同时用ADF内置的trim()函数清理前后的空白和换行符,将内部Lookup的sqlReaderQuery值修改为:
@trim(item().source_query)
对应管道JSON的修改效果如下:
"sqlReaderQuery": { "value": "@trim(item().source_query)", "type": "Expression" }
2. 可选数据源校验
检查存储SQL语句的[Sales].[Customers]表source_query字段,确认存储的SQL本身没有多余的单引号、特殊符号,避免后续出现其他语法问题。
修改后重新运行管道,内部Lookup拼接的SQL语句就会符合语法要求,可以正常执行。
内容的提问来源于stack exchange,提问作者Kenny_I
相关产品推荐
相关产品推荐

