json 如何在nifi中使用Jolt规范以嵌套方式转换数据?

b4qexyjb  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(139)

我希望使用Nifi的jolt规格以给定的方式转换此数据。
条件是,如果studentIdloc_idtopId相同,那么我们将合并它们的信息,并按原样传递其余部分。

数据

[
  {
    "studentId": "2222",
    "loc_id": "L1",
    "topId": "Lotus",
    "SubID1": "A1",
    "SubID2": "B1"
  },
  {
    "studentId": "2222",
    "loc_id": "L1",
    "topId": "Lotus",
    "SubID1": "A2",
    "SubID2": ""
  },
  {
    "studentId": "3333",
    "loc_id": "L3",
    "topId": "Rose",
    "SubID1": "A3",
    "SubID2": ""
  },
  {
    "studentId": "4444",
    "loc_id": "L3",
    "topId": "tulip",
    "SubID1": "A5",
    "SubID2": "B7"
  }
]

**jolt规范后的数据:**前两个数据具有相同的studentId,loc_id和topId,因此我们必须合并它们的信息,其余两个已经通过,因为它是一个访问列表的添加。

[
  {
    "studentId": "2222",
    "loc_id": "L1",
    "topId": "Lotus",
    "VisitList": [
      {
        "SubID1": "A1",
        "SubID2": "B1"
      },
      {
        "SubID1": "A2",
        "SubID2": ""
      }
    ]
  },
  {
    "studentId": "3333",
    "loc_id": "L3",
    "topId": "Rose",
    "VisitList": [
      {
        "SubID1": "A3",
        "SubID2": ""
      }
    ]
  },
  {
    "providerId": "4444",
    "specillity": "L3",
    "topId": "tulip",
    "VisitList": [
      {
        "SubID1": "A5",
        "SubID2": "B7"
      }
    ]
  }
]
3vpjnl9f

3vpjnl9f1#

您可以使用以下转换

[
  { // group by those three attributes
    "operation": "shift",
    "spec": {
      "*": {
        "*": "@1,studentId.@1,loc_id.@1,topId.&",
        "S*": "@1,studentId.@1,loc_id.@1,topId.VisitList[&1].&"
      }
    }
  },
  { // get rid of the wrappers
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "@": ""
          }
        }
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "*": {
        "*": "ONE", // pick only single one from repeating components 
        "VisitList": "MANY"
      }
    }
  },
  { // get rid of the generated nulls within "VisitList" arrays 
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=recursivelySquashNulls"
    }
  }
]

网站http://jolt-demo.appspot.com/上的***演示***是

相关问题