Nifi - 将根 json 元素拆分为不同的流文件

Nifi - splitting root json elements into different flowfiles

我有一个数据源正在发送 json 格式的消息,其中包含各种键值对。每条消息中包含哪些密钥是不一致的。但是,我需要将每个单独的键值对拆分到它自己的流文件中,并能够提取键名

这样做的原因是我需要使用键名执行 table 查找,以生成新的数据格式,包括值

例如,如果我收到这样的消息:

{
  "key1": 123,
  "Key2": 4234,
  "Key3": 789  
}

我希望输出是三个独立的流文件

{
  "key1": 123
}

{
  "Key2": 4234
}

{
  "Key3": 789 
}

我还需要根据这些单独的流文件了解如何提取密钥的名称

对了,

你需要一个震动变压器

您的流程将如下所示:

我的 jolt 设置它的地方:

震动规格:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "[#2].Key",
        "@": "[#2].Value"
      }
    }
  }
]

N

**接下来将输出拆分为 $.*.

并使用 EvaluateJson 评估 KeyValue,然后您可以根据需要使用 Lookup 中的属性。

这将是 Jolt Trans 的输出:

[ {
  "Key" : "key1",
  "Value" : 123
}, {
  "Key" : "Key2",
  "Value" : 4234
}, {
  "Key" : "Key3",
  "Value" : 789
} ]