Azure Synapse:如何将Lookup的列值传入存储过程参数
解决方法:将Lookup输出的文件名传入存储过程参数
问题根源
你的Get Valid Entity Names活动输出结构里,File_Name并不是直接挂在output根节点下,而是嵌套在output.value数组的每个对象中。直接用@activity('Get Valid Entity Names').output.File_Name自然找不到这个属性,导致报错。
输出结构回顾
活动返回的JSON结构如下:
{"count": 2,"value": [{"Entity_Name": "Member","File_Name": "MemberPARQUET"},{"Entity_Name": "Dealer_Group","File_Name": "Dealer_Group.PARQUET"}]}
解决方案分两种场景:
场景1:存储过程支持批量更新(推荐)
如果你的存储过程可以接受多个文件名(比如通过逗号分隔的字符串、表值参数),可以用表达式把所有File_Name拼接成合适的格式:
- 拼接成逗号分隔字符串的表达式:
这个表达式会生成@join(activity('Get Valid Entity Names').output.value, ',', item().File_Name)MemberPARQUET,Dealer_Group.PARQUET,直接传给存储过程参数即可,存储过程内部可以用字符串拆分逻辑批量更新所有文件的状态。
场景2:逐个调用存储过程更新
如果必须单个文件单独处理,需要用ForEach活动循环遍历文件名数组:
- 添加
ForEach活动,将其Items属性设置为:@activity('Get Valid Entity Names').output.value - 在
ForEach内部添加调用存储过程的活动,将存储过程的参数值设置为:
这样每次循环都会取数组里当前元素的@item().File_NameFile_Name,传入存储过程完成单文件更新。
内容的提问来源于stack exchange,提问作者Shweta Reddy
相关产品推荐
相关产品推荐

