Apache nifi 如何在NIFI中为过滤json数据应用RouteOnAttribute上的条件

Apache nifi 如何在NIFI中为过滤json数据应用RouteOnAttribute上的条件,apache-nifi,minify,Apache Nifi,Minify,在尼菲 我使用了从web应用程序获取数据的调用http处理器。。我想在json数据文件上应用这个条件……我的意思是当resource=“abc”alarm get filter(报警获取过滤器)将发送到一个处理器,而其他报警将发送到另一个处理器……因此,我的问题是需要什么处理器……到目前为止,我使用了一个http调用,它将从我的web应用程序中提供所有报警。两个putfile处理器用于存储报警,一个用于resource=“abc”,另一个用于其他资源。我还使用了一个RoutonArribute处

在尼菲
我使用了从web应用程序获取数据的调用http处理器。。我想在json数据文件上应用这个条件……我的意思是当resource=“abc”alarm get filter(报警获取过滤器)将发送到一个处理器,而其他报警将发送到另一个处理器……因此,我的问题是需要什么处理器……到目前为止,我使用了一个http调用,它将从我的web应用程序中提供所有报警。两个putfile处理器用于存储报警,一个用于resource=“abc”,另一个用于其他资源。我还使用了一个RoutonArribute处理器作为条件..在RoutOnAttribute配置中,我在动态属性上贴花,该属性的名称是alarms.resource,值是${alarms.resource:equals('abc')}

您可以使用QueryRecord对流文件执行SQL查询,例如
SELECT*fromFlowFile,其中resource='abc'
。但是,如果
资源
字段有多个值,则可以使用PartitionRecord。这将写出单独的流文件,每个流文件包含所有对
资源具有相同值的行。不过,此时您仍需要进行路由。

@AnnapurnaGautam

您需要首先将资源放入一个属性(EvaluteJsonPath),然后将该属性用于RouteOnAttribute。在RouteOnAttribute中不能使用相同的编码EvaluateJsonPath。例如,在EvaluateJsonPath中:

checkResource = $.alarms.resource  
然后在RouteOnAttribute中对该属性进行编码:

 ${checkResource:equals('abc')}