Azure Synapse:拼接Lookup返回的文件名时如何去除\与"特殊字符
问题场景
- 从Lookup活动获取了50个文件名
- 需要将所有文件名拼接至一个变量中,用于一次性更新所有文件的状态
- 当前使用的拼接表达式:
Append Filename = @item().File_Name Get list of filenames = @concat(variables('v_conc_filename'), item().File_Name, ',') fila_filename = @replace(replace(variables('v_get_filenames'), '\"', ''), '\\', '') - 存在问题:即便执行了字符串替换,最终输出仍包含
\和",示例输出如下:{ "name": "v_final_filename", "value": "[\"P_Full_Additional_Data_List_Audit.000.PARQUET\", \"P_Full_Adviser_Audit.000.PARQUET\", \"P_Full_Additional_Data_Delete.000.PARQUET\", \"P_Full_Adviser.000.PARQUET\" } - 期望结果:生成无
\和"的拼接列表,示例如下,以便直接用于数据库更新操作:{ "name": "v_final_filename", "value": "[P_Full_Additional_Data_List_Audit.000.PARQUET, P_Full_Adviser_Audit.000.PARQUET, P_Full_Additional_Data_Delete.000.PARQUET, P_Full_Adviser.000.PARQUET }
解决方案
方法1:使用join函数直接生成(推荐)
无需循环拼接,直接利用Lookup返回的数组,通过join函数一步生成目标格式:
@concat('[', join(body('Lookup活动的名称').value, ', '), ']')
说明:
body('Lookup活动的名称').value指向Lookup活动返回的包含所有文件名的数组join函数将数组内的文件名用,连接成字符串concat在首尾添加[和],直接得到无转义符和引号的列表
方法2:修正现有循环拼接逻辑
如果必须保留循环拼接的方式,调整替换规则并处理末尾多余逗号:
- 调整替换表达式,直接替换实际的引号和转义符:
@replace(replace(variables('v_get_filenames'), '"', ''), '\', '') - 移除拼接后末尾多余的逗号,再添加首尾括号:
@concat('[', substring(variables('v_get_filenames'), 0, sub(length(variables('v_get_filenames')), 1)), ']')
内容的提问来源于stack exchange,提问作者Shweta Reddy
相关产品推荐
相关产品推荐

