我希望使用Nifi的jolt规格以给定的方式转换此数据。
条件是,如果studentId
和loc_id相同,那么我们将合并它们的信息,并按原样传递其余信息。还有空字段“”。
数据
[
{
"studentId": "2222",
"loc_id": "L1",
"topId": "Lotus",
"SubID1": "A1",
"SubID2": "B1"
},
{
"studentId": "2222",
"loc_id": "L1",
"topId": "tulip",
"SubID1": "A2",
"SubID2": ""
},
{
"studentId": "3333",
"loc_id": "L3",
"topId": "Rose",
"SubID1": "A3",
"SubID2": ""
},
{
"studentId": "4444",
"loc_id": "L3",
"topId": "Rose",
"SubID1": "A5",
"SubID2": "B7"
}
]
震动规范后的数据:前两个数据具有相同的studentId
和loc_id,因此我们合并了它们的信息,其余两个数据通过了访问列表
[
{
"studentId": "2222",
"loc_id": "L1",
"VisitList": [
{
"topId": "Lotus",
"SubID1": "A1",
"SubID2": "B1"
},
{
"topId": "tulip",
"SubID1": "A2",
"SubID2": ""
}
]
},
{
"studentId": "3333",
"loc_id": "L1",
"VisitList": [
{
"topId": "Rose",
"SubID1": "A3",
"SubID2": ""
}
]
},
{
"providerId": "4444",
"specillity": "L3",
"VisitList": [
{
"topId": "Rose",
"SubID1": "A5",
"SubID2": "B7"
}
]
}
]
2条答案
按热度按时间hyrbngr71#
您可以使用此规范:
1 -
shift
:您应该为每个对象创建一个唯一的根。在这种情况下,我们通过组合两个值来创建它,如下所示:@(1,studentId).@(1,loc_id)
。2 -
cardinality
:将每个包含1个对象的对象更改为数组。我们应该这样做,为下一个shift
操作准备输入。3 -
shift
:创建您想要的输出。4 -
cardinality
:在所有对象中将studentId
和loc_id
更改为字符串。xqkwcwgp2#
您可以使用
JoltTransformJSON
处理器。您需要创建一个Jolt规范来合并基于studentId
和loc_id
的数据。