Jolt数组展开转换:修正JSON结构映射失败问题
Jolt JSON结构转换解决方案
源JSON(Source JSON)
[ { "dimensions": [ { "id": "1546382552", "name": "BLOOM FACE MASK DAY SPA AM APOTHEKA" }, { "id": "2024-12-01", "name": "" } ], "metrics": [ 364, 20 ] }, { "dimensions": [ { "id": "857640546", "name": "Vitamin A" }, { "id": "2024-12-02", "name": "" } ], "metrics": [ 310, 22 ] } ]
转换规则
- 从
dimensions数组:- 第一个对象的
id映射为字段sku,name映射为sku_name - 第二个对象的
id映射为字段date
- 第一个对象的
- 从
metrics数组:- 第一个元素映射为
session_view,第二个元素映射为session_view_search
- 第一个元素映射为
尝试的失败Jolt规范
[ { "operation": "shift", "spec": { "*": { "dimensions": { "*": { "0": { "id": "[&2].sku", "name": "[&2].sku_name" }, "1": { "id": "[&2].date" } } }, "metrics": { "0": "session_view", "1": "session_view_search" } } } } ]
期望输出
[ { "sku": 1546382552, "sku_name": "BLOOM FACE MASK DAY SPA AM APOTHEKA", "date": "2024-12-01", "session_view": 364, "session_view_search": 20 }, { "sku": 857640546, "sku_name": "Vitamin A", "date": "2024-12-02", "session_view": 310, "session_view_search": 22 } ]
正确的Jolt规范
[ { "operation": "shift", "spec": { "*": { "dimensions": { "0": { "id": "[&3].sku", "name": "[&3].sku_name" }, "1": { "id": "[&3].date" } }, "metrics": { "0": "[&2].session_view", "1": "[&2].session_view_search" } } } }, { "operation": "modify-overwrite-beta", "spec": { "*": { "sku": "=toInteger" } } } ]
说明
原失败规范的问题点:
dimensions下错误嵌套*通配符,应直接通过索引0和1定位目标数组元素metrics部分未用[&2]关联外层数组索引,导致字段无法正确归属到对应对象- 新增
modify-overwrite-beta操作,将sku的字符串类型转为数字,匹配期望输出格式
内容的提问来源于stack exchange,提问作者Mark Avreliy
相关产品推荐
相关产品推荐

