下面是我来自合并记录处理器的输入,其中 erp_projectid 是相关属性
输入 JOLTTransformJson :
[
{
"priority_id": 8,
"erp_projectid": 1383,
"erp_subprojectid": 1496,
"subject": "NewPhaseTest Main"
},
{
"priority_id": 8,
"erp_projectid": 1383,
"erp_subprojectid": 1497,
"subject": "NewPhaseTest-002"
},
{
"erp_projectid": 1383,
"erp_subprojectid": 1496,
"project_id": 300
}
]
预期输出
[
{
"priority_id": 8,
"erp_projectid": 1383,
"erp_subprojectid": 1496,
"subject": "NewPhaseTest Main",
"project_id": 300
},
{
"priority_id": 8,
"erp_projectid": 1383,
"erp_subprojectid": 1497,
"subject": "NewPhaseTest-002",
"project_id": 300
}
]
我已经尝试编写一个 jolt 规范,但它没有给我正确的输出...为了提供一点上下文,有两个executesql给了我两个流文件,我已经通过evaluatejsonpath将它们传递给它们,以给它们erp_projectid然后我将它们合并为一个流文件,我已共享该流文件的输入,并且我希望它们通过 jolttransform json 来获得所需的输出,在这种情况下,dsl 是什么,如果这不可行怎么办我能达到我想要的输出吗?
您可以使用以下 shift 转换:
[
{ //accumulate the stuff under common "erp_projectid"
//while prepare the objects without "priority_id" to be eliminated
"operation": "shift",
"spec": {
"*": {
"project_id": "@1,erp_projectid.&",
"*": "@1,erp_projectid.&1.@1,priority_id.&"
}
}
},
{ //transfer the extracted "project_id" attribute
//into the objects
"operation": "shift",
"spec": {
"*": {
"*": {
"*": {
"*": "[#3].&",
"@2,project_id": "[#3].project_id"
}
},
"project_id": { "": "" } //get rid of the transferred attribute
}
}
}
]