Jolt Transform:合并具有超过 1 个相似字段和 2 个不同字段的对象
Jolt Transform: Merging objects with more than 1 similar fields and 2 dissimilar fields
我遇到了类似的问题:
我想转换以下输入:
[
{
"name": "Product A",
"price": 10,
"color": "green",
"category": "fruit",
"id": 1
},
{
"name": "Product A",
"price": 20,
"color": "yellow",
"category": "fruit",
"id": 1
},
{
"name": "Product B",
"price": 30,
"color": "blue",
"category": "vegetable",
"id": 2
}
]
进入此输出:
[
"product_1" : {
"name": "Product A",
"price": [10,20],
"color": ["green", "yellow"],
"category": "fruit",
"id": 1
},
"product_2" : {
"name": "Product B",
"price": 30,
"color": "blue",
"category": "vegetable",
"id": 2
}
]
在上面的输入中,前两个对象相似,具有相同的名称、类别和 ID,因此我将它们合并为 1 个对象。有 2 个不同的字段,即价格和颜色。所以我正在创建这些字段的数组并将它们放入合并的对象中。
我尝试了以下方法:
[
{
"operation": "shift",
"spec": {
"*": {
"id": {
"*": {
"@2": "&[]"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
// "*": {
// "price": "product_&2.price",
// "color": "product_&2.color"
// }
//,
"0": {
"name": "product_&2.name",
"category": "product_&2.category",
"id": "product_&2.id"
}
}
}
}
]
但是我要么可以得到不同字段的数组,要么可以得到具有相似字段的对象。但是我没有让两者同时工作。
双重shift转换可能会被应用:在第一步;具有公共 id
值的对象组合在公共数组元素中,并在第二个元素中;公共键的值组合在一起。但是,为了摆脱某些键的重复元素 (name
,category
& id
在这种情况下)例如
[
{
"operation": "shift",
"spec": {
"*": "@id"
}
},
{
"operation": "shift",
"spec": {
"1": {
"*": {
"*": "product_&2.&[]"
}
},
"2": "product_&"
}
},
{
"operation": "cardinality",
"spec": {
"product_1": {
"name": "ONE",
"category": "ONE",
"id": "ONE"
}
}
}
]
我遇到了类似的问题:
我想转换以下输入:
[
{
"name": "Product A",
"price": 10,
"color": "green",
"category": "fruit",
"id": 1
},
{
"name": "Product A",
"price": 20,
"color": "yellow",
"category": "fruit",
"id": 1
},
{
"name": "Product B",
"price": 30,
"color": "blue",
"category": "vegetable",
"id": 2
}
]
进入此输出:
[
"product_1" : {
"name": "Product A",
"price": [10,20],
"color": ["green", "yellow"],
"category": "fruit",
"id": 1
},
"product_2" : {
"name": "Product B",
"price": 30,
"color": "blue",
"category": "vegetable",
"id": 2
}
]
在上面的输入中,前两个对象相似,具有相同的名称、类别和 ID,因此我将它们合并为 1 个对象。有 2 个不同的字段,即价格和颜色。所以我正在创建这些字段的数组并将它们放入合并的对象中。
我尝试了以下方法:
[
{
"operation": "shift",
"spec": {
"*": {
"id": {
"*": {
"@2": "&[]"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
// "*": {
// "price": "product_&2.price",
// "color": "product_&2.color"
// }
//,
"0": {
"name": "product_&2.name",
"category": "product_&2.category",
"id": "product_&2.id"
}
}
}
}
]
但是我要么可以得到不同字段的数组,要么可以得到具有相似字段的对象。但是我没有让两者同时工作。
双重shift转换可能会被应用:在第一步;具有公共 id
值的对象组合在公共数组元素中,并在第二个元素中;公共键的值组合在一起。但是,为了摆脱某些键的重复元素 (name
,category
& id
在这种情况下)例如
[
{
"operation": "shift",
"spec": {
"*": "@id"
}
},
{
"operation": "shift",
"spec": {
"1": {
"*": {
"*": "product_&2.&[]"
}
},
"2": "product_&"
}
},
{
"operation": "cardinality",
"spec": {
"product_1": {
"name": "ONE",
"category": "ONE",
"id": "ONE"
}
}
}
]