Azure Data Mapper VS Code扩展:Filter函数后访问子元素问题
在Azure Logic Apps VS Code Data Mapper中访问筛选后N1Loop1实例的子元素
单个匹配实例的访问方法
如果你的filter操作只会返回一个N1Loop1实例(比如业务上N101="ST"的记录唯一),可以用first()函数提取筛选结果的第一个元素,然后直接访问其子元素:
- 点击目标字段的输入框,切换到表达式模式(点击输入框左上角的
</>图标) - 输入表达式:
比如要取N102字段,就写:first(filter(N1Loop1, item()/N101 = 'ST'))/[子元素名称]first(filter(N1Loop1, item()/N101 = 'ST'))/N102 - 确认表达式后,映射会自动关联到目标字段。
多个匹配实例的遍历访问
如果筛选后有多个N1Loop1实例需要映射到目标的重复结构:
- 先在左侧数据源中,找到你已经应用
filter的N1Loop1集合(或者直接在目标重复节点的输入框中写入筛选表达式filter(N1Loop1, item()/N101 = 'ST')) - 将这个筛选后的集合直接拖到目标架构的重复节点上(比如目标的
ShipToRecords节点) - 对于目标重复节点下的子字段(比如
ShipName、ShipAddress),直接从左侧筛选后的N1Loop1的子元素拖过来,或者在表达式模式下用item()访问当前循环的子元素:
这里的item()/N102item()代表当前遍历到的筛选后的N1Loop1实例。
空值处理(可选)
如果存在筛选后无匹配项的情况,建议用coalesce()函数避免空引用错误,比如:
coalesce(first(filter(N1Loop1, item()/N101 = 'ST'))/N102, '')
这个表达式会在筛选结果为空时返回空字符串,而不是抛出错误。
内容的提问来源于stack exchange,提问作者Marc Youcef
相关产品推荐
相关产品推荐

