连续查询(Continuous Queries,简称CQ)是时序引擎内部自动定期执行的时序查询任务,有助于数据的长期高效存储。您可以通过在CREATE CONTINUOUS QUERY语法中配置数据写入规则,完成定期连续查询任务的创建。
引擎与版本
CREATE CONTINUOUS QUERY语法仅适用于时序引擎。无版本要求。
语法
create_cq_statement ::= CREATE CONTINUOUS QUERY [database_identifier.] cq_identifier WITH ( cq_attribute_statement ) AS insert_select_statement
cq_attribute_statement ::= attribute_definition (',' attribute_definition)*
attribute_definition ::= attr_identifier '=' attr_val
使用说明
数据库名(database_identifier)
持续查询对象所属数据库的名称,不指定时默认是当前数据库。使用时必须在数据库名前后添加反引号(`),例如 `db_sensor`
。
持续查询名称(cq_identifier)
使用时必须在持续查询名称前后添加反引号(`),例如 `my_cq`
。
持续查询配置项(cq_attribute_statement)
cq_attribute_statement为持续查询的详细配置。支持的配置参数请参见下表。
参数 | 类型 | 是否必选 | 说明 |
interval | STRING | 是 | 用于指定持续查询的计算间隔,即计算任务的执行间隔。最小单位为秒。 格式为 其中:
|
window | STRING | 否 | 用于指定持续查询的计算窗口,即每次计算所覆盖的数据的时间范围。若不指定,则计算窗口与执行间隔(interval)相同。例如, 计算窗口为左闭右开的时间区间。 格式为 其中:
|
offset | STRING | 否 | 指定窗口偏移。默认窗口是按照 格式为 其中:
|
数据写入语句(insert_select_statement)
insert_select_statement的语法说明,请参见数据写入。
指定insert_select_statement时可以不用指定查询的时间范围,引擎会自动在当前时间窗口内进行计算。
示例
以下示例创建了一个持续查询:每小时计算过去两个小时内原始时序表sensor
中的每小时平均温度和每小时平均湿度,并将数据写入数据库default
中的表sensor
中。
CREATE CONTINUOUS QUERY `default`.`my_cq` WITH (`INTERVAL`='1h', `WINDOW`='2h') AS
INSERT INTO `default`.`sensor`
SELECT MEAN(`temperature`) AS `temperature`,
MEAN(`humidity`) AS `humidity`, `device_id`, `region`
FROM `default`.`sensor`
SAMPLE BY 1h;