継続クエリ (CQ) は、LindormTSDB の時系列データに対して指定された間隔で自動的に実行され、データを長期間効率的に保存します。CREATE CONTINUOUS QUERY 構文を使用して、データ書き込みルールを構成することで継続クエリを作成できます。
適用エンジンとバージョン
CREATE CONTINUOUS QUERY 構文は、LindormTSDB のすべてのバージョンにのみ適用されます。
構文
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 を指定する場合、クエリの時間範囲を指定する必要はありません。この場合、LindormTSDB はクエリを実行する時間間隔中に計算タスクを実行します。
SELECT句の列数は、フィールドとタグの両方を含め、宛先テーブルと一致する必要があります。
例
次の例では、継続的なクエリを作成します。このクエリは 1 時間ごとに実行され、ソーステーブル sensor から過去 2 時間の 1 時間ごとの平均温度と湿度を計算します。結果は 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;