如何使用JOLT转换将Prometheus API数据关联数组值为单条记录
JOLT转换方案:Prometheus Matrix格式转扁平化记录数组
需求说明
将Prometheus API返回的matrix类型JSON数据,把每个result项的metric字段(排除__name__)与values数组的每一组值关联,转换为单条记录的扁平化数组。
JOLT转换规范
[ { "operation": "shift", "spec": { "data": { "result": { "*": { "metric": { "*": "&3_&1_&", "__name__": null }, "values": { "*": { "0": "&4_&1_timestamp", "1": "&4_&1_value" } } } } } } }, { "operation": "shift", "spec": { "*_*": { "*": "&2.&", "timestamp": "&2.timestamp", "value": "&2.value" } } }, { "operation": "shift", "spec": { "*": "[]" } } ]
转换步骤解释
第一层Shift操作
- 定位到
data.result数组,遍历每个结果项 - 复制
metric中除__name__外的所有字段,用带结果项索引的临时键标记,确保字段归属对应结果项 - 遍历
values数组的每个元素,将时间戳(数组第1个元素)和值(数组第2个元素)分别映射为带结果项索引的临时键
- 定位到
第二层Shift操作
- 将带相同结果项索引的临时键整合为独立对象,把metric字段、timestamp、value归到同一对象下
第三层Shift操作
- 将所有独立对象收集到根数组中,生成最终的扁平化记录结构
验证
将你提供的输入JSON通过上述JOLT规范转换后,即可得到期望的输出数组结构。
内容的提问来源于stack exchange,提问作者Esecede
相关产品推荐
相关产品推荐

