You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADF/Synapse复制数据活动映射中读取数组最后一项的语法

ADF复制活动JSON路径取数组最后一项方案

正确语法

Azure Data Factory复制活动架构映射内置的JSONPath实现不支持last()函数,直接使用负整数索引即可从数组末尾定位元素,-1就对应数组最后一项,完全不需要硬编码正向索引值。
你场景下三个字段的正确映射路径如下:

  • 传感器名称:$['meta']['params']['sensors'][*]['name'](原路径无需修改)
  • 最新读数时间:$['meta']['sensorReadings'][*]['readings'][-1]['dateTime']
  • 最新读数值:$['meta']['sensorReadings'][*]['readings'][-1]['value']

该语法规则下,-n代表倒数第n个元素:-1是最新1条、-2是倒数第2条,哪怕传感器离线导致API返回的readings数组长度不足192,也不会出现硬编码[191]时的数组越界报错,会自动拉取到数组内存储的最新一条记录。

你之前尝试的几种last相关写法均不生效,原因是last()属于高级JSONPath函数,仅在ADF映射数据流、表达式编辑器内支持,复制活动的可视化映射路径不识别该函数语法。

更优实现建议

  • 最低改造成本方案:直接替换为上述[-1]索引即可,不需要调整现有15分钟触发逻辑、活动结构,就能解决之前逐次尝试索引、6次失败漏数的问题,只要API返回的readings数组非空就能正确取到最新值。
  • 高灵活度方案:在复制活动前新增Lookup活动拉取API全量响应,通过ADF内置表达式@last(json(activity('调用API').output.Response).meta.sensorReadings[0].readings)直接提取最新读数对象,校验时间有效性、过滤离线异常值后再传入复制活动写入数据湖,适合需要加数据校验规则的场景。
  • 高容错方案:配置复制活动直接扁平化展开所有传感器的全量readings记录写入数据湖,写入时通过接收器端的转换逻辑按传感器ID分组、取dateTime最大的1条记录,哪怕后续API返回的记录排序规则变化、出现乱序,也不会取错最新值。

内容的提问来源于stack exchange,提问作者lexpagee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:36:15