Nifi - SplitJson 保留所有其他信息
Nifi - SplitJson retaining all other info
在 Nifi 中工作,我在流文件的内容中有以下 json 结构:
{
"firstname": "fred",
"lastname": "jackson",
"dob": "19550607",
"children": [{
"firstname": "janet",
"lastname": "jackson",
"dob": "20020607"
},
{
"firstname": "michael",
"lastname": "jackson",
"dob": "20010201"
},
{
"firstname": "tito",
"lastname": "jackson",
"dob": "20030707"
}
]
}
我想将其拆分为三 (3) 个流文件,每个流文件都包含顶级信息,但只有一个 child。例如,其中一个看起来像这样:
{
"firstname": "fred",
"lastname": "jackson",
"dob": "19550607",
"children": {
"firstname": "janet",
"lastname": "jackson",
"dob": "20020607"
}
}
同样,我将拥有三个不同的流程文件,每个文件一个 child。输出不必完全像这样。重要的是我能够拆分结构,同时在每个结果流文件中维护公共数据。
我尝试将 SplitJson 与“$.children”的 JSONExpression 一起使用,这确实为我提供了三个流文件,但我丢失了 parent 信息。我可以为属性中的公共元素保存 key/values,拆分,然后添加它们,但是 parent 信息可能比我的示例(动态字段等)更复杂,所以我不确定如何我会这样做。
感谢任何想法或想法。
最简单的方法是使用 ForkRecord 和 JSON Reader/Writer。
将 Include Parent Fields
设置为 true
以保留父字段。
但是,这可能会以您不希望的方式使 JSON 变平 - 试一试。
或者,查看 JoltTransformJSON which gives a lot more flexibility, but is quite complex to work out the appropriate spec. You can use https://jolt-demo.appspot.com/#inception 来测试您的 JOLT 规格。
在 Nifi 中工作,我在流文件的内容中有以下 json 结构:
{
"firstname": "fred",
"lastname": "jackson",
"dob": "19550607",
"children": [{
"firstname": "janet",
"lastname": "jackson",
"dob": "20020607"
},
{
"firstname": "michael",
"lastname": "jackson",
"dob": "20010201"
},
{
"firstname": "tito",
"lastname": "jackson",
"dob": "20030707"
}
]
}
我想将其拆分为三 (3) 个流文件,每个流文件都包含顶级信息,但只有一个 child。例如,其中一个看起来像这样:
{
"firstname": "fred",
"lastname": "jackson",
"dob": "19550607",
"children": {
"firstname": "janet",
"lastname": "jackson",
"dob": "20020607"
}
}
同样,我将拥有三个不同的流程文件,每个文件一个 child。输出不必完全像这样。重要的是我能够拆分结构,同时在每个结果流文件中维护公共数据。
我尝试将 SplitJson 与“$.children”的 JSONExpression 一起使用,这确实为我提供了三个流文件,但我丢失了 parent 信息。我可以为属性中的公共元素保存 key/values,拆分,然后添加它们,但是 parent 信息可能比我的示例(动态字段等)更复杂,所以我不确定如何我会这样做。
感谢任何想法或想法。
最简单的方法是使用 ForkRecord 和 JSON Reader/Writer。
将 Include Parent Fields
设置为 true
以保留父字段。
但是,这可能会以您不希望的方式使 JSON 变平 - 试一试。
或者,查看 JoltTransformJSON which gives a lot more flexibility, but is quite complex to work out the appropriate spec. You can use https://jolt-demo.appspot.com/#inception 来测试您的 JOLT 规格。