Skip to main content

QueryRecord

描述:

根据输入数据流的内容匹配一个或多个SQL查询。SQL查询的结果将作为输出数据流的内容。这可用于诸如特定字段的过滤,转换和行级过滤。可以重命名列,执行简单的计算和聚合等。组件配置有读取服务和写入服务,以便允许更加灵活的控制输入输出的数据格式。必须为组件配置至少一个用户自定义的属性。 自定义属性名将作为输出数据流的连线名,而自定义属性的值是一个SQL SELECT语句,用于指定如何转换/过滤输入数据。 SQL语句必须是有效的ANSI SQL规范(Apache Calcite)。如果转换失败,则原始数据流将路由到“failure”连线。否则,所有数据将被路由到关联的连线。如果写入服务选择使用继承模式(Schema),请务必注意,继承的模式将来自ResultSet,而不是输入的记录。还允许QueryRecord组件的单个实例具有多个SQL查询,每个查询返回一组不同的列和聚合。因此,派生的模式将没有模式名称,因此,如果从记录继承模式,则配置的写入服务不会尝试将模式名称作为属性编写,这一点很重要。有关更多信息,请参阅组件使用文档。

标签:

sql, query, calcite, route, record, transform, select, update, modify, etl, filter, record, csv, json, logs, text, avro, aggregate, 查询, 记录

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置.

名字默认值允许值列表描述
读取服务控制器服务API:
RecordReaderFactory
实现:
ParquetReader
GrokReader
SyslogReader
Syslog5424Reader
CSVReader
AvroReader
JsonPathReader
JsonTreeReader
ScriptedReader
XMLReader
指定用于解析传入数据和确定数据结构的服务
写入服务控制器服务API:
RecordSetWriterFactory
实现:
CSVRecordSetWriter
FreeFormTextRecordSetWriter
AvroRecordSetWriter
JsonRecordSetWriter
XMLRecordSetWriter
ParquetRecordSetWriter
ScriptedRecordSetWriter
指定用于将结果写入数据流的服务
包括零记录数据流包含
- 包含
- 不包含
对传入的数据流运行SQL语句时,如果结果没有数据,则此属性决定是否仍旧输出数据流
缓存模式(Schema)缓存
- 缓存
- 不缓存
解析SQL查询并派生数据流的模式代价相对高昂。 如果设置缓存,则组件将缓存这些值,以便组件更高效,更快。 但是,如果这样做,则第一个数据流派生的模式必须能应用于所有后继的数据流。 如果所有数据流都没有完全相同的模式,或者SQL SELECT语句使用表达式语言,则此值应设置为false。

动态参数:

名字描述
The name of the relationship to route data toA SQL SELECT statement that is used to determine what data should be routed to this relationship.每个用户自定义的属性都需要指定要在数据上执行的SQL SELECT语句,所选的数据将路由到名称为属性名称的连线
支持表达式语言 (支持流属性和变量)

连线:

名字描述
failure如果数据流因任何原因处理失败(例如,SQL语句包含输入数据中不存在的列),则原始输入数据流将路由到此连线
original原始输入数据流被输出到该连线

动态连线:

根据用户设置可创建动态连线。

名字描述
<Property Name>Each user-defined property defines a new Relationship for this Processor.

读取属性:

未提供。

写入属性:

名字描述
mime.type将mime.type属性设置为写入服务指定的MIME类型
record.count选中查询的记录数

状态管理:

该组件不保存状态。

限制:

该组件没有限制

输入流要求:

组件必须提供输入流。

系统资源考量:

未提供。