在 Apache NiFi 的 JSON Jolt 中支持 concat

Support for concat in JSON Jolt in Apache NiFi

使用 Apache NiFi 我想根据其他两个字段的串联向 JSON 流文件中的所有元素添加一个新字段。我正在尝试为此使用 JoltTransformJSON 处理器,但是,我想使用的 Jolt 变换可以在线使用 tools 但在 NiFi 中不起作用。我怀疑是版本问题,但我的 Jolt 规范可能有些愚蠢。

输入 JSON 看起来像这样...

[
  {
    "id": 485842,
    "cc": 1,
    "x": 0,
    "y": null
  },
  {
    "id": 281733,
    "cc": 1,
    "x": 0,
    "y": 10
  },
  {
    "id": 721412,
    "cc": 12,
    "x": 0,
    "y": null
  }
]

我想要的输出是这样的...

[ {
  "id" : 485842,
  "cc" : 1,
  "x" : 0,
  "y" : null,
  "id_cc" : "485842_1"
}, {
  "id" : 281733,
  "cc" : 1,
  "x" : 0,
  "y" : 10,
  "id_cc" : "281733_1"
}, {
  "id" : 721412,
  "cc" : 12,
  "x" : 0,
  "y" : null,
  "id_cc" : "721412_12"
} ]

我在网上使用的 Jolt 变换 site 是...

[{
  "operation": "modify-default-beta",
  "spec": {
    "*": {
      "id_cc": "=concat(@(1,id),'_',@(1,cc))"
    }
  }
}]

在 NiFi 中,我将 JoltTransformJSON 处理器配置为具有 Modify-Default 并且我使用了这个稍微修改过的 Jolt 规范...

{
    "operation": "modify-default",
    "spec": {
      "*": {
        "id_cc": "=concat(@(1,id),'_',@(1,cc))"
      }
    }
}

NiFi 验证此 OK 并且进程运行。输出 JSON 仅包含一条记录,并像这样添加了一个新字段

"operation": "modify-default"

是否有可以解决此问题的修改默认操作的快速修复方法,或者是否有使用移位操作的更简单方法?

提前感谢您的指点。

在同事的帮助下,我找到了一种方法来完成这项工作。

首先,将JoltTransformJSON处理器的Jolt Transformation DSL属性设为Chain

其次,将 Jolt 规格设置为以下...

[{
    "operation": "modify-default-beta",
    "spec": {
      "*": {
        "id_cc": "=concat(@(1,id),'_',@(1,cc))"
      }
    }
}]

[]beta 一样重要。

第三,确保输入 Jolt 处理器的 JSON 是一个数组。

所有这些都正确,就会产生预期的输出。