CREATE CONTINUOUS QUERY
本文介绍创建连续查询的SQL语法。
语法
create_cq_statement ::= CREATE CONTINUOUS QUERY [database_name.] cq_name WITH ( cq_attribute_statement ) AS insert_select_statement
cq_attribute_statement ::= attribute_definition (',' attribute_definition)*
attribute_definition ::= attr_name '=' attr_val
参数
参数 | 说明 |
database_name | 连续查询对象所属数据库的名称。不指定的情况下默认是当前数据库。必须是SQL常量或标识符。 |
cq_name | 连续查询的名称。 |
cq_attribute_statement | 连续查询的详细配置。支持的配置参数请参见下表。 |
cq_attribute_statement支持的参数如下:
参数 | 类型 | 是否必选 | 说明 |
interval | String | 是 | 用于指定持续查询的计算间隔,即计算任务的执行间隔。最小单位为秒。 格式为 其中:
|
window | String | 否 | 用于指定持续查询的计算窗口,即每次计算所覆盖的数据的时间范围。若不指定,则计算窗口与执行间隔(interval)相同。例如, 计算窗口为左闭右开的时间区间。 格式为 其中:
|
offset | String | 否 | 指定窗口偏移。默认窗口是按照 格式为 其中:
|
insert_select_statement的语法说明,请参见数据写入。
指定insert_select_statement时可以不用指定查询的时间范围,引擎会自动在当前时间窗口内进行计算。
示例
以下示例创建了一个持续查询:每小时计算过去两个小时内原始时序表sensor
中的每小时平均温度和每小时平均湿度,并将数据写入新数据库db_sensor_year
中的表sensor
中。
CREATE CONTINUOUS QUERY `db_sensor`.`my_cq` WITH (`INTERVAL`='1h', `WINDOW`='2h') AS
INSERT INTO `db_sensor_year`.`sensor`
SELECT MEAN(`temperature`) AS `temperature`,
MEAN(`humidity`) AS `humidity`, `device_id`, `region`
FROM `db_sensor`.`sensor`
SAMPLE BY 1h;