JoltTransformJson:如何添加包含所有列名的changed_columns字段
可以通过JoltTransformJson实现该需求
原数据与需求
原JSON数据:
{ "table": "table_name", "op_type": "U", "before": { "AAAA": "1-1111", "BBBB": "2022-08-31 03:57:01" }, "after": { "AAAA": "1-1111", "BBBB": "2022-08-31 10:10:34", "DDDD": "2023-08-31 23:59:59" } }
需要新增changed_columns字段,值为合并before和after的所有列名(去重后),用逗号拼接成字符串:"AAAA,BBBB,DDDD"
Jolt转换规则
[ { "operation": "shift", "spec": { "*": "&", "before": { "*": "temp_columns[]" }, "after": { "*": "temp_columns[]" } } }, { "operation": "modify-overwrite-beta", "spec": { "temp_columns": "=unique(@(1,temp_columns))", "changed_columns": "=join(',',@(1,temp_columns))" } }, { "operation": "remove", "spec": { "temp_columns": "" } } ]
转换后结果
{ "table": "table_name", "op_type": "U", "before": { "AAAA": "1-1111", "BBBB": "2022-08-31 03:57:01" }, "after": { "AAAA": "1-1111", "BBBB": "2022-08-31 10:10:34", "DDDD": "2023-08-31 23:59:59" }, "changed_columns": "AAAA,BBBB,DDDD" }
步骤说明
- Shift阶段:保留原有的
table、op_type、before、after字段,同时把before和after里的所有列名收集到临时数组temp_columns中; - Modify阶段:先对
temp_columns去重,再用逗号把数组元素拼接成字符串,赋值给changed_columns; - Remove阶段:删除临时数组
temp_columns,只保留最终需要的字段。
内容的提问来源于stack exchange,提问作者veganzombie
相关产品推荐
相关产品推荐

