連續查詢(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時可以不用指定查詢的時間範圍,引擎會自動在目前時間視窗內進行計算。
SELECT子句的列數需要和目標表一致,包含Field和Tag。
樣本
以下樣本建立了一個持續查詢:每小時計算過去兩個小時內原始時序表sensor中的每小時平均溫度和每小時平均濕度,並將資料寫入資料庫default中的表sensor 中。
CREATE CONTINUOUS QUERY `default`.`my_cq` WITH (`INTERVAL`='1h', `WINDOW`='2h') AS
INSERT INTO `default`.`sensor`
SELECT AVG(`temperature`) AS `temperature`,
AVG(`humidity`) AS `humidity`, `device_id`, `region`
FROM `default`.`sensor`
SAMPLE BY 1h;