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

pap*_*elr 1 attributes json 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""]    

      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

[ {
  "PersonID" : -1089196095,
  "TripStartStation" : "WIEHLE_RESTON_EAST",
  "TripEndStation" : "SPRING_HILL"
}
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

我尝试使用EvaluateJSONPath以下配置,这就是我最终使用empty string setunder 的方式PersonalID

在此处输入图片说明

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

Shu*_*Shu 5

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

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

流动:

--> SplitJson --> EvaluateJsonPath--> other processors
Run Code Online (Sandbox Code Playgroud)

有关相同问题的更多详细信息,请参阅链接。