如何在NiFi中用Jolt Transform从数组提取元素生成新属性
解决方案:通过Jolt索引提取数组元素生成新属性
完全可以通过数组索引来提取元素并生成对应新属性,以下是完整的Jolt转换规则及步骤说明:
完整Jolt转换规则
[ // 第一步:拆分字符串为数组,同时去除每个元素的首尾空格 { "operation": "modify-overwrite-beta", "spec": { "FILE": "=split(',',@(1,FILE))", "FILE[]": "=trim" } }, // 第二步:通过数组索引提取元素,映射到指定属性名 { "operation": "shift", "spec": { "FILE": { "0": "FILE.First", "1": "FILE.Second", "2": "FILE.Third", "3": "FILE.Fourth" } } }, // 第三步:将结果包裹在数组中(匹配目标格式要求) { "operation": "shift", "spec": { "*": "[#1].&" } } ]
规则说明
拆分并清理数组:
原split操作后数组元素可能带空格(比如原字符串是"23, 21, 24, 25"),新增"FILE[]": "=trim"可批量去除每个数组元素的首尾空格,避免属性值带多余空白字符。通过索引映射属性:
在shift操作中,使用数组索引(从0开始计数)定位元素,"0"对应FILE.First,"1"对应FILE.Second,以此类推,直接将数组元素映射到目标属性名。包裹为数组结构:
最后一步shift操作把顶层的FILE对象包裹进数组,完全匹配你需要的输出格式。
转换结果
经过上述规则转换后,最终得到:
[ { "FILE": { "First": "23", "Second": "21", "Third": "24", "Fourth": "25" } } ]
内容的提问来源于stack exchange,提问作者Pauline Rumyantseva
相关产品推荐
相关产品推荐

