Jolt - 在数组列表中插入匹配的字段

问题描述 投票:0回答:1

下面是我来自合并记录处理器的输入,其中 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 是什么,如果这不可行怎么办我能达到我想要的输出吗?

apache apache-nifi jolt
1个回答
0
投票

您可以使用以下 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
      }
    }
  }
]
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.