在AWS Step Functions Map中使用JSONata聚合统计数据
JSONata 动态统计项求和聚合方案(适配AWS Step Functions场景)
需求场景
处理来自AWS Step Functions Map Step的动态统计数组,数组中每个对象的统计键不固定,需要按键对所有对应数值求和,得到聚合后的统计对象。
输入示例
[ { "stat1": 2, "stat2": 3 }, { "stat1": 4, "stat3": 5 } ]
目标输出
{ "stat1": 6, "stat2": 3, "stat3": 5 }
解决方案JSONata表达式
$merge($$.$map(function($v, $k) { { $k: $v } })) ~> $each($sum)
表达式工作原理
- 拆分键值对:
$$.$map(function($v, $k) { { $k: $v } })遍历输入数组中的每个统计对象,将每个对象的键值对拆分为独立的单键对象数组(例如{"stat1":2, "stat2":3}会转为[{"stat1":2}, {"stat2":3}])。 - 合并相同键:
$merge(...)将所有单键对象数组合并为一个对象,相同键名的数值会被自动收集为数组,得到中间结果{"stat1":[2,4], "stat2":[3], "stat3":[5]}。 - 数组求和:
~> $each($sum)通过链式调用,对合并后对象的每个键对应数组执行求和操作,将数组替换为最终求和数值,得到目标聚合结果。
这个方案完全适配动态键的场景,无需预设统计项列表,可直接用于AWS Step Functions的JSONata处理节点中。
内容的提问来源于stack exchange,提问作者Davide Orazio Montersino
相关产品推荐
相关产品推荐

