如何在Logic App中将查询结果存入变量并在另一查询中使用
Logic Apps跨查询传递Id列表配置排查与实现方案
配置界面可直接识别的典型错误
- 变量初始化位置错误:「初始化变量」操作未放在触发器之后、第一个查询之前,而是嵌套在条件分支、循环、独立作用域内部,会导致后续操作无法读取变量,甚至直接抛出变量未定义报错
- 变量类型不匹配:存储Id列表时未选择
Array类型,误选字符串、对象类型,存入的查询结果会被转成非结构化文本,后续无法做成员存在性判断 - 赋值逻辑缺失提取步骤:第一个查询返回多结果时,直接将完整查询输出赋值给变量,未提前提取Id字段,变量中存储的是带全量字段的对象数组,而非纯Id列表
- 赋值操作使用错误:追加Id时误用「设置变量」操作覆盖原有值,或初始化空数组后未正确遍历追加,最终变量中只会留存最后一条Id,无法得到完整列表
- 作用域不通:第一个查询和变量赋值操作放在封闭作用域/For Each循环内部,未将结果输出到全局上下文,外部的第二个查询无法读取到赋值后的变量值
需求落地操作步骤
- 触发器执行后第一时间添加「初始化变量」操作,自定义变量名(如
IdList),类型选择Array,初始值设置为[]空数组 - 运行第一个查询拿到结果后,添加「选择」数据操作:
- 输入来源填第一个查询返回的结果集,通常为查询输出的
value字段,写法参考@body('第一个查询操作的名称')?['value'] - 映射栏只保留Id字段,映射值填写Id对应的字段路径,写法参考
@item()?['Id'],该步骤会直接输出由纯Id组成的数组
- 输入来源填第一个查询返回的结果集,通常为查询输出的
- 添加「设置变量」操作,选中之前初始化的
IdList,值直接填入上一步「选择」操作的输出,完成Id列表的存储 - 运行第二个查询拿到对应结果集
- 做Id存在判断时,直接调用内置
contains函数即可,判断表达式写法为@contains(variables('IdList'), 待校验的单条Id值),返回true代表Id存在于列表中,返回false则为不存在
校验变量是否存储成功无需等待配置人在岗,手动触发一次Logic App运行,打开运行历史查看变量赋值操作的原始输出,就能直接确认变量内存储的内容是否符合预期,不需要靠推测排查问题。
内容的提问来源于stack exchange,提问作者BlakeB9
相关产品推荐
相关产品推荐

