Apache nifi NiFi:QueryRecord使用ExecuteScript

Apache nifi NiFi:QueryRecord使用ExecuteScript,apache-nifi,Apache Nifi,我使用卡夫卡主题(嵌套json)中的数据,该主题必须根据字段值进行过滤。 因此,我使用ExecuteScript处理器过滤记录并转换一些字段。 对于过滤,我使用了findAll函数,而没有使用QueryRecord,它工作正常 我这里的问题是,这种方法是否解决了QueryRecord处理器用于过滤的相同目的 因为我不确定在传入流文件中存在嵌套json对象时如何使用查询记录 我尝试了queryrecord,但它抛出了一个错误: SELECT * FROM FLOWFILE WHERE RPATH(

我使用卡夫卡主题(
嵌套json
)中的数据,该主题必须根据字段值进行过滤。 因此,我使用
ExecuteScript处理器
过滤记录并转换一些字段。 对于过滤,我使用了
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"
      }
   }
}
从流程文件中选择*,其中RPATH(order,'/orderDetail/orderId')='1126'
错误:
未找到函数签名RPATH(,)的匹配项
org.apache.calcite.runtime.CalciteContextException
样本数据:
{  
“零售”:{
“零售ID”:“6133”,
“零售名称”:“Maveric”
},
“命令”:{
“orderDetail”:{
“订单ID”:“1126”,
“订单名称”:“NNDRFG”
}
}
}

RPATH\u字符串的语法不正确,它只是RPATH

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


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

Bryan,谢谢,仍然面临同样的问题。我已经用错误消息和ConsumerKafkaRecord处理器的数据更新了问题。您使用的是什么版本的NiFi?它的Apache NiFi 1.8.0RPATH添加在1.9.0:)如果每个流文件只有一个json,您可以使用EvaluateJsonPath将任何路径提取到属性中,然后RouteOnAttribute来路由您感兴趣的值