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 处理器的实例可以拥有多个查询,每个查询返回不同的列和聚合结果。因此,派生的架构没有架构名称,如果继承架构,配置的记录写入器不应尝试将架构名称写入为属性。有关更多信息,请参阅“处理器使用”文档。
输入要求¶
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 中的特定字段,其中要保留的字段的名称是已知的 |
根据内容对面向记录的数据进行路由处理 |