ADF中如何将数组变量转为单引号逗号分隔字符串并传给笔记本参数?
ADF管道变量转带单引号的字符串解决方案
要把ADF管道变量CurrentObjects(数组类型)转换成'object1', 'object2'格式的字符串传递给笔记本参数,你可以用以下两种方法解决:
方法一:先给每个元素加单引号再拼接
使用map函数遍历数组中的每个元素,给每个元素前后包裹单引号,再用, 连接起来。表达式如下:
@join(map(variables('CurrentObjects'), (item) => concat('''', item, '''')), ', ')
解释:
- ADF表达式中,单引号需要用两个单引号转义,所以
concat('''', item, '''')会生成'item'(前两个单引号转义为一个,后两个同理)。 map函数会把数组里的每个元素都处理成带单引号的格式,最后用join拼接成目标字符串。
方法二:先拼接再替换格式
如果习惯先拼接数组再处理格式,可以用replace函数替换逗号为', ',再给整体前后加单引号:
@concat('''', replace(join(variables('CurrentObjects'), ','), ',', ''', '''), '''')
解释:
- 先用
join(variables('CurrentObjects'), ',')生成object1,object2(无空格)。 - 用
replace把逗号替换为', ',得到object1', 'object2。 - 最后用
concat给前后各加一个单引号,得到'object1', 'object2'。
关于之前的报错原因
你之前用concat(''')出现String start single quote has no closing quote错误,是因为ADF表达式中单个单引号会被视为未闭合的字符串标记,必须用两个单引号表示一个实际的单引号,否则语法不合法。
内容的提问来源于stack exchange,提问作者Wardaky
相关产品推荐
相关产品推荐

