NiFi:提取FlowFile的内容并将其添加到属性中

时间:2018-10-29 21:53:45

标签: json attributes apache-nifi

我正在从以下JSON / AVRO模式生成随机数据:

{
  "type" : "record",
  "namespace" : "test",
  "name" : "metro_data",
  "fields": [
    {
      "name" : "PersonID",
      "type" : "int"
},
{
  "name" : "TripStartStation",
  "type" : {
    "type" : "enum",
    "name" : "StartStation",
    "symbols" : ["WIEHLE_RESTON_EAST", "SPRING_HILL", "GREENSBORO"]    

    }
},
{
  "name" : "TripEndStation",
  "type" : {
    "type" : "enum",
    "name" : "EndStation",
    "symbols" : ["WIEHLE_RESTON_EAST", "SPRING_HILL", "GREENSBORO""]    

      }
    }
  ]
}

上面的模式生成了这个,例如:

[ {
  "PersonID" : -1089196095,
  "TripStartStation" : "WIEHLE_RESTON_EAST",
  "TripEndStation" : "SPRING_HILL"
}

我想获取模式的PersonID号,并将其添加到“属性”中。例如,这张照片中的空白需要提取从流程生成的实际PersonID编号:

enter image description here

我尝试将EvaluateJSONPath用于以下配置,这就是我最终在empty string set下使用PersonalID的原因:

enter image description here

我的下一个处理器是UpdateAttribute吗?不确定如何提取该内容。谢谢!

1 个答案:

答案 0 :(得分:3)

您要拥有 json消息数组(例如:[...]),并且需要使用<<将json数组拆分成单独的流文件 strong> SplitJson 处理器,拆分表达式为 $。*

然后使用 EvaluateJsonProcessor 提取 PersonID 值作为属性。

流量:

--> SplitJson --> EvaluateJsonPath--> other processors

有关更多详细信息,请参见关于同一问题的this链接。