json 转换Apache Nifi中的ExecuteSQL记录

0tdrvxhp  于 2023-03-09  发布在  Apache
关注(0)|答案(1)|浏览(141)

我是Nifi的新手,所以还没有学会。我有一个任务是从executeSQL中获取数据,并返回如下记录:

[{
  "PKG_HA_01_ON":2.0,
  "PKG_HA_03_ON":28.0,
  "PKG_HA_04_ON":7.0,
  "PKG_HA_05_ON":0.0,
  "PKG_HA_06_ON":1.0,
  "PKG_HA_09_ON":5.0
 },
 {
  "PKG_HA_01_ON":8.02905,
  "PKG_HA_03_ON":57.29038333333333,
  "PKG_HA_04_ON":2.2858666666666663,
  "PKG_HA_05_ON":60.0,
  "PKG_HA_06_ON":12.291533333333332,
  "PKG_HA_09_ON":12.3363
}]

这是一个联合查询的结果。现在,我想转换成这样:

[{
   "machine":"PKG_HA_01_ON",
   "counter":2.0,
   "duration":8.02905
 },
 {
   "machine":"PKG_HA_03_ON",
   "counter":28.0,
   "duration":57.29038333333333
}]

我研究过JoltTransformJSON,但仍然坚持使用它。那么,实现所需JSON的最佳方法是什么?
提前感谢!!!

6l7fqoea

6l7fqoea1#

您可以连续应用shift变换,如下所示

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@PKG_HA_01_ON": "PKG_HA_01_ON.&",
        "@PKG_HA_03_ON": "PKG_HA_03_ON.&"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "&.machine",
        "@(1,&.0)": "&.counter",
        "@(1,&.1)": "&.duration"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": ""
    }
  }
]

在第一步中,将结果集限制为两个键(PKG_HA_01/3_ON),同时分别确定键01的值,然后在添加machine元素时将这些带编号的键转换为您的键(分别为counterduration),并在最后一步中删除键名。

相关问题