使用Apache NiFi我想基于两个其他字段的串联为JSON流文件中的所有元素添加一个新字段。我正在尝试使用<form id='form1'>
<select id="options" multiple >
<option value="action">Action</option>
<option value="animation">Animation</option>
<option value="children">Children</option>
<option value="classics">Classics</option>
<option value="comedy">Comedy</option>
<option value="documentary">Documentary</option>
<option value="drama">Drama</option>
<option value="family">Family</option>
<option value="foreign">Foreign</option>
<option value="games">Games</option>
<option value="horror">Horror</option>
<option value="music">Music</option>
<option value="new">New</option>
<option value="scifi">Sci-Fi</option>
<option value="sports">Sports</option>
<option value="travel">Travel</option>
</select>
</form>
处理器,但是,我想使用的Jolt变换可以使用在线tools工作正常,但在NiFi中不起作用。我怀疑版本问题,但我的Jolt规范可能有些愚蠢。
输入JSON看起来像这样......
JoltTransformJSON
我想要的输出是......
[
{
"id": 485842,
"cc": 1,
"x": 0,
"y": null
},
{
"id": 281733,
"cc": 1,
"x": 0,
"y": 10
},
{
"id": 721412,
"cc": 12,
"x": 0,
"y": null
}
]
我在网上site使用的Jolt变换是......
[ {
"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"
} ]
在NiFi中,我将[{
"operation": "modify-default-beta",
"spec": {
"*": {
"id_cc": "=concat(@(1,id),'_',@(1,cc))"
}
}
}]
处理器配置为JoltTransformJSON
,我使用这个稍微修改过的Jolt规范......
Modify-Default
NiFi验证此操作正常并且该过程运行。输出JSON仅包含一个记录,并添加了一个新字段
{
"operation": "modify-default",
"spec": {
"*": {
"id_cc": "=concat(@(1,id),'_',@(1,cc))"
}
}
}
是否可以快速修复将解决此问题的修改默认操作,还是使用移位操作更简单?
提前感谢任何指示。
答案 0 :(得分:2)
经过同事的一些帮助,我找到了一种方法来完成这项工作。
首先,将Jolt Transformation DSL
处理器的JoltTransformJSON
属性设置为Chain
。
其次,将Jolt规范设置为以下...
[{
"operation": "modify-default-beta",
"spec": {
"*": {
"id_cc": "=concat(@(1,id),'_',@(1,cc))"
}
}
}]
[]
与操作中的beta
一样至关重要。
第三,确保输入Jolt处理器的JSON是一个数组。
获取所有这些正确的信息并生成预期的输出。