在 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 是一个数组。
所有这些都正确,就会产生预期的输出。
使用 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 是一个数组。
所有这些都正确,就会产生预期的输出。