NiFi:使用ExecuteScript的QueryRecord

时间:2019-05-21 18:56:44

标签: apache-nifi

我使用来自kafka主题(nested json)的数据,该主题必须基于字段值进行过滤。 因此,我使用ExecuteScript processor过滤出记录并转换了某些字段。 为了进行过滤,我使用了findAll函数而不使用了QueryRecord,它起作用了。

我的问题是这种方法是否可以解决与QueryRecord处理器进行过滤的相同目的 因为当传入的流文件中存在嵌套的json对象时,我不确定如何使用查询记录。

我尝试使用queryrecord,但抛出错误:

SELECT * FROM FLOWFILE WHERE RPATH(order, '/orderDetail/orderId') = '1126'

Error:
No match found for function signature RPATH(<JavaType(...Record)>,<CHARACTER>)
org.apache.calcite.runtime.CalciteContextException

Sample Data:

{  
   "retail":{  
      "retailId":"6133",
      "retailName":"Maveric"
   },
   "order":{  
      "orderDetail":{  
         "orderId":"1126",
         "orderName":"NNDRFG"
      }
   }
}

1 个答案:

答案 0 :(得分:2)

RPATH_STRING语法不正确,只是RPATH。

请参阅QueryRecord的其他详细信息文档:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.9.2/org.apache.nifi.processors.standard.QueryRecord/additionalDetails.html

它有一个带有嵌套字段的JSON示例。