gpt4 book ai didi

apache-nifi - 如何根据 SQL 查询结果过滤流文件?

转载 作者:行者123 更新时间:2023-12-04 15:54:19 25 4
gpt4 key购买 nike

是否可以根据返回单行结果的 SQL 查询结果来路由流文件?例如,如果结果为“1”,则将处理流文件;否则,它将被忽略。

解决方案

以下方法最适合我。

  1. 使用ExecuteSQL 处理器来运行过滤SQL 查询。编写查询以按照 Shu 建议的方式生成单个记录(匹配)或空记录集(不匹配)。
  2. ExecuteSQL 连接到 RouteOnAttribute 处理器,以便使用以下路由属性值 ${executesql.row.count:replaceNull 过滤掉不匹配的流文件(0):gt(0)}

注意,应用ExecuteSQL后流文件的原始内容将丢失。这对我来说不是问题,因为我在处理流文件内容之前进行过滤,并且我的 SQL 查询完全基于流文件属性而不是其内容。虽然在更一般的情况下,当流文件内容被流的传入部分修改时,应该将文件内容保存在某个地方(例如文件系统)并在应用过滤部分后恢复它。

最佳答案

您可以在您的 sql 查询中添加 where 子句 where <field_name> = 1那么我们只会在 result value =1 时输出一个 flowfile

(或)

检查 NiFi 中的数据:

我们将得到 AVRO 格式的数据作为 SQL 查询的结果,这样您就可以使用

option1:ConvertAvroToJson Processor:

AVRO 数据转换为 JSON 格式,然后使用 EvaluateJsonPath 处理器从 json 内容中提取值作为属性。

然后使用 RouteOnAttribute 处理器使用 NiFi expression language equals function 添加新属性比较值并将流文件路由到匹配的关系。

引用this链接有关 EvaluateJsonpath 和 RouteOnAttribute 处理器配置的更多详细信息。

option2: Using QueryRecord processor:

通过使用QueryRecord 处理器,我们可以对流文件的内容运行SQL 查询

将新属性添加到处理器中

select * from FLOWFILE where <filed_name> =1 

将属性关系提供给其他处理器

引用this有关 QueryRecord 处理器使用情况的更多详细信息的链接。

关于apache-nifi - 如何根据 SQL 查询结果过滤流文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52501201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com