QueryRecord 2025.5.31.15

捆绑包

org.apache.nifi | nifi-standard-nar

描述

对 FlowFile 内容执行一个或多个 SQL 查询。然后,SQL 查询结果将成为输出 FlowFile 的内容。例如,这可以用于特定字段的筛选、转换和行级筛选。可以重命名列,执行简单的计算和聚合等操作。该处理器配置有记录读取器控制器服务和记录写入器服务,以支持灵活的输入和输出数据格式。处理器必须配置至少一个用户定义的属性。属性的名称是将数据路由到的关系,该属性的值是用于指定应如何转换/筛选输入数据的 SQL SELECT 语句。SQL 语句必须是有效的 ANSI SQL 且由 Apache Calcite 提供支持。如果转换失败,则原始 FlowFile 将路由到“failure”关系。否则,所选数据将路由到对应的关系。如果记录写入器选择继承记录的架构,需要注意继承的是 ResultSet 的架构,而非输入记录的架构。这使得单个 QueryRecord 处理器的实例可以拥有多个查询,每个查询返回不同的列和聚合结果。因此,派生的架构没有架构名称,如果继承架构,配置的记录写入器不应尝试将架构名称写入为属性。有关更多信息,请参阅“处理器使用”文档。

标签

aggregate、avro、calcite、csv、etl、filter、json、logs、modify、query、record、route、select、sql、text、transform、update

输入要求

REQUIRED

支持敏感的动态属性

false

属性

属性

描述

dbf-default-precision

当 DECIMAL/NUMBER 值作为 Avro 的“decimal”逻辑类型写入时,需要指定一个表示可用数字位数的特定“precision”。通常,精度由列数据类型定义或数据库引擎默认值定义。但是,某些数据库引擎可以返回未定义的精度(即 0)。这时将使用“默认小数精度”来写入这些未定义精度的数值。

dbf-default-scale

当 DECIMAL/NUMBER 值作为 Avro 的“decimal”逻辑类型写入时,需要指定一个表示可用小数位数的特定“scale”。通常,标度由列数据类型定义或数据库引擎默认值定义。但是,当数据库返回未定义的精度(即 0)时,某些数据库引擎也可能无法确定标度。这时将使用“默认小数标度”来写入这些未定义标度的数值。如果一个值的小数位数多于指定的标度,则该值将被舍入,例如,标度为 0 时,1.53 变成 2;标度为 1 时,1.53 会变为 1.5。

include-zero-record-flowfiles

当对传入的 FlowFile 执行 SQL 语句时,如果结果没有数据,则此属性用于指定是否仍将 FlowFile 发送到对应的关系中

record-reader

指定用于解析传入数据和确定数据架构的控制器服务

record-writer

指定用于将结果写入到 FlowFile 的控制器服务

关系

名称

描述

failure

如果由于任何原因(例如,SQL语句包含输入数据中不存在的列)FlowFile 处理失败,则原始 FlowFile 将路由到此关系

original

原始 FlowFile 会路由到此关系

写入属性

名称

描述

mime.type

将 mime.type 属性设置为记录写入器指定的 MIME 类型

record.count

查询选择的记录数

QueryRecord.Route

FlowFile 会路由到的关系

用例

根据记录字段的值筛选出记录

仅保留特定记录

仅保留 Record 中的特定字段,其中要保留的字段的名称是已知的

根据内容对面向记录的数据进行路由处理

语言: 中文