簡體   English   中英

這是一個關於 nifi jolt 轉換的問題,用於將基於鍵屬性的 json 數組分組到新數組中

[英]This a question about nifi jolt transformation for grouping json arrays based on a key attribute into new array

我是 JOLT 轉換的新手,我嘗試根據ACCOUNTNUMBERZIP對以下 JSON 數組對象進行分組,然后使用 JOLT 轉換將其余屬性聚合到各自的角色中。 請幫助我編寫 JOLT 規范以對 JSON 對象進行分組以獲得下面給出的輸出。

輸入:

[
  {
    "ClientCode": "1234567",
    "Relationships": [
      {
        "ENTITYID": 35056,
        "COUNTYCODE": 19,
        "ACCOUNTNUMBER": "1803",
        "ROLETYPE": "Payer",
        "ROLESEQNUM": 1,
        "ZIP": 55111
      },
      {
        "ENTITYID": 35056,
        "COUNTYCODE": 19,
        "ACCOUNTNUMBER": "1803",
        "ROLETYPE": "Owner",
        "ROLESEQNUM": 1,
        "ZIP": 55111
      },
      {
        "ENTITYID": 35056,
        "COUNTYCODE": 19,
        "ACCOUNTNUMBER": "1803",
        "ROLETYPE": "Insured",
        "ROLESEQNUM": 1,
        "ZIP": 55111
      },
      {
        "ENTITYID": 35056,
        "COUNTYCODE": 19,
        "ACCOUNTNUMBER": "1538",
        "ROLETYPE": "Payer",
        "ROLESEQNUM": 1,
        "ZIP": 54333
      },
      {
        "ENTITYID": 35056,
        "COUNTYCODE": 19,
        "ACCOUNTNUMBER": "1538",
        "ROLETYPE": "Owner",
        "ROLESEQNUM": 1,
        "ZIP": 54333
      },
      {
        "ENTITYID": 35056,
        "COUNTYCODE": 19,
        "ACCOUNTNUMBER": "1538",
        "ROLETYPE": "Insured",
        "ROLESEQNUM": 1,
        "ZIP": 54333
      }
    ]
  }
]

輸出:

[
  {
    "ClientCode": "1249612",
    "Relationships": [
      {
        "ACCOUNTNUMBER": "1803",
        "ZIP": 55111,
        "roles": [
          {
            "ENTITYID": 35056,
            "COUNTYCODE": 19,
            "ROLETYPE": "Payer",
            "ROLESEQNUM": 1
          },
          {
            "ENTITYID": 35056,
            "COUNTYCODE": 19,
            "ROLETYPE": "Owner",
            "ROLESEQNUM": 1
          },
          {
            "ENTITYID": 35056,
            "COUNTYCODE": 19,
            "ROLETYPE": "Insured",
            "ROLESEQNUM": 1
          }
        ]
      },
      {
        "ACCOUNTNUMBER": "1538",
        "ZIP": 54333,
        "roles": [
          {
            "ENTITYID": 35056,
            "COUNTYCODE": 19,
            "ROLETYPE": "Payer",
            "ROLESEQNUM": 1
          },
          {
            "ENTITYID": 35056,
            "COUNTYCODE": 19,
            "ROLETYPE": "Owner",
            "ROLESEQNUM": 1
          },
          {
            "ENTITYID": 35056,
            "COUNTYCODE": 19,
            "ROLETYPE": "Insured",
            "ROLESEQNUM": 1
          }
        ]
      }
    ]
  }
]

你可以通過下面的移位變換來弄清楚

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ClientCode": "ClientCode",
        "Relationships": {
          "*": {
            "ACCOUNTNUMBER": "&2.[&1].&",
            "ZIP": "&2.[&1].&",
            "*": "&2.[&1].roles[0].&"
          }
        }
      }
    }
  }
]

其中星號鍵用於產生每個子對象,並且&2 s 表示從當前位置向上兩級聲明的鍵(例如Relationships ), [&1] s 將形成的數組的元素一對一組合, roles[0] s 代表將除我們選擇的元素之外的其余元素放入名為roles的新數組roles ,最右邊的& 符號代表最里面的鍵值對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM