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

Apache NiFi中如何用JOLT关联嵌套数组的指标名与对应值?

JOLT转换:配对分离的指标名称与值并保留状态字段

问题背景

你手头有一段Google Analytics的JSON数据,其中指标名称(metricHeaderEntries)和对应统计值(data.totals)是分离存储但顺序严格对应的。想要转换成指标名称与值一一绑定的数组结构,同时保留isDataGolden字段,但之前用简单shift规则没得到预期结果还丢失了字段,想知道是否能用modify-overwrite-beta以及具体实现方法。

解决方案:使用Shift操作实现索引配对

其实不需要用到modify-overwrite-beta,用JOLT的shift操作就能完美解决这个问题——核心思路是利用数组索引,把同位置的指标名称和值映射到同一个对象里。以下是完整的JOLT规范:

[
  {
    "operation": "shift",
    "spec": {
      "reports": {
        "*": {
          "columnHeader": {
            "metricHeader": {
              "metricHeaderEntries": {
                "*": {
                  "name": "metrics[&1].name"
                }
              }
            }
          },
          "data": {
            "totals": {
              "*": {
                "values": {
                  "*": "metrics[&1].value"
                }
              }
            },
            "isDataGolden": "isDataGolden"
          }
        }
      }
    }
  }
]

规则解释

我们逐段拆解这个shift规则的作用:

  • 定位指标名称:遍历reports数组中的每个元素,找到columnHeader.metricHeader.metricHeaderEntries里的每一项指标。&1表示当前遍历的数组索引(比如第一个指标索引是0,第二个是1),把name字段映射到metrics[索引].name。
  • 配对对应的值:同样遍历data.totals[0].values里的每个统计值,用&1获取当前值的索引,把值映射到metrics[索引].value——这样就通过索引把同位置的名称和值绑定到了同一个对象中。
  • 保留状态字段:直接把data.isDataGolden字段映射到顶层的isDataGolden,避免丢失这个状态标识。

把你的原始JSON输入这个JOLT规则,就能得到你想要的目标结构啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:15:09