NiFi Jolt转换需求:按文件路径分组生成对应文件名数组
NiFi Jolt转换规则实现按路径分组整理文件名
输入JSON示例
[ { "filename": "FF/raw/first/raw_A/filenameA_20240212002113.DAT" }, { "filename": "FF/raw/first/raw_A/filenameA__20240205150101.DAT" }, { "filename": "FF/raw/first/raw_B/filenameB_20240212002113.DAT" }, { "filename": "FF/raw/first/raw_B/filenameB_20240205150101.DAT" } ]
目标输出JSON示例
[ { "raw_A": [ "filenameA_20240212002113.DAT", "filenameA_20240205150101.DAT" ] }, { "raw_B": [ "filenameB_20240212002113.DAT", "filenameB_20240205150101.DAT" ] } ]
Jolt转换规则
[ { "operation": "modify-overwrite-beta", "spec": { "*": { "pathParts": "=split('/', @(1,filename))", "group": "@(1,pathParts[3])", "fileName": "@(1,pathParts[-1])" } } }, { "operation": "shift", "spec": { "*": { "fileName": "@(1,group).[]" } } }, { "operation": "shift", "spec": { "*": { "$": "[#2].&", "@": "[#2].&" } } } ]
规则步骤说明
- modify-overwrite-beta 操作:将每个
filename按/拆分路径为数组,提取第4个元素作为分组标识,提取最后一个元素作为独立文件名。 - 第一次 shift 操作:以分组标识为键,将同组的文件名归集到对应数组中,形成键值对结构。
- 第二次 shift 操作:把每个键值对转换为单独的对象,最终组合成目标数组格式。
内容的提问来源于stack exchange,提问作者Manimaran Dhandapani
相关产品推荐
相关产品推荐

