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

Apache NiFi中使用Jolt Transform拆分记录求助

用Jolt Transform实现数组按索引拆分生成多条记录

输入数据

{"resourceid": "d6315d4d7f0c","timestamp": [166406,166404,166504],"Key": ["mem","net","diskspace"],"data": [89,90,91]}

期望输出

[{"resourceid": "d6315d4d7f0c","timestamp": 166406,"Key": "mem","data": 89},{"resourceid": "d6315d4d7f0c","timestamp": 166404,"Key": "net","data": 90},{"resourceid": "d6315d4d7f0c","timestamp": 166504,"Key": "diskspace","data": 91}]

Jolt Transform Spec

通过shift和cardinality组合操作实现需求,具体配置如下:

[
  {
    "operation": "shift",
    "spec": {
      "timestamp": {
        "*": {
          "@(2,resourceid)": "[&1].resourceid",
          "@": "[&1].timestamp",
          "@(2,Key[&1])": "[&1].Key",
          "@(2,data[&1])": "[&1].data"
        }
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "*": {
        "resourceid": "ONE",
        "timestamp": "ONE",
        "Key": "ONE",
        "data": "ONE"
      }
    }
  }
]

逻辑说明

  • shift操作:遍历timestamp数组的每个元素(*匹配数组索引),通过@(2,resourceid)向上两层获取根节点的resourceid值,映射到对应索引的对象中;@直接取当前timestamp元素值;@(2,Key[&1])和@(2,data[&1])分别提取同索引的Key、data数组元素,对应到每个对象的字段。
  • cardinality操作:强制每个字段为单值类型,避免shift操作生成数组形式的字段值,保证输出结构符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:40:34