本文介绍预降采样规则的创建、查询和删除操作,用于产生和管理预降采样数据。
前提条件
以下语法仅适用于时序引擎。无版本要求。
CREATE PREDOWNSAMPLE
创建预降采样规则用于产生预降采样数据。
语法
create_predownsample_statement ::= CREATE PREDOWNSAMPLE time_interval
AGGREGATORS '('function_identifier ( ',' function_identifier) ')'
[ TTL time_interval ] ON table_identifier
time_interval ::= interval units使用说明
参数 | 说明 |
interval | 正整数,表示时间线聚合的时间窗口的数值。 |
units | 时间单位,包括s(秒)、m(分钟)、h(小时)、d(天)。 |
AGGREGATORS | 预降采样支持的聚合函数,取值如下:
说明 预降采样不支持使用avg函数,但可以通过count和sum函数计算平均值。如果存在覆盖写的情况,可能会出现数据重复相加导致平均值结果不精确。 |
function_identifier | 聚合函数名称。 说明 一条创建语句中可以包括一个或者多个具有相同降采样周期的聚合函数。也可以将多个聚合函数拆分成多条创建语句。 |
TTL | 设置预降采样数据的有效期。 说明 如果多个预降采样规则设置了TTL,那么取最大的TTL作为所有预降采样规则的TTL。 |
table_identifier | 时序数据表名。 |
从预降采样数据中查询数据
默认情况下,降采样查询数据是从原始数据中进行查询。如果要从预降采样数据中查询数据需要在查询语句中使用Hint(/*+ PREDOWNSAMPLE */)。
示例
创建预采样规则并设置数据有效期为90天。
CREATE PREDOWNSAMPLE `1h` AGGREGATORS (`sum`, `max`) TTL `90d` ON sensor;从预降采样数据中查询数据,数据结果按照1小时进行降采样。
SELECT /*+ PREDOWNSAMPLE */ SUM(temperature) FROM sensor WHERE time >= 1619076780000 AND time <= 1619076800000 SAMPLE BY 1h;
SHOW PREDOWNSAMPLES
查询预降采样规则。
语法
SHOW PREDOWNSAMPLES [ ON table_identifier ]参数说明
参数 | 必选 | 描述 |
table_identifier | 否 | 时序数据表名。 说明 不填写该参数时,默认返回所有表的预降采样规则。 |
示例
示例一:返回所有表的预降采样规则。
SHOW PREDOWNSAMPLES;返回结果如下:
+--------+----------+------------+-----+----------------------+ | table | interval | aggregator | ttl | update_time | +--------+----------+------------+-----+----------------------+ | sensor | 1h | sum, max | 90d | 2021-10-10T08:00:00Z | | sensor | 5m | sum, max | 30d | 2021-10-10T08:00:00Z | | test | 1m | sum, max | 30d | 2021-10-10T08:00:00Z | | test | 2h | sum, max | 30d | 2021-10-10T08:00:00Z | +--------+----------+------------+-----+----------------------+示例二:返回sensor表的预降采样规则。
SHOW PREDOWNSAMPLES ON sensor;返回结果如下:
+--------+----------+------------+-----+----------------------+ | table | interval | aggregator | ttl | update_time | +--------+----------+------------+-----+----------------------+ | sensor | 1h | sum, max | 90d | 2021-10-10T08:00:00Z | | sensor | 5m | sum, max | 30d | 2021-10-10T08:00:00Z | +--------+----------+------------+-----+----------------------+
DROP PREDOWNSAMPLE
删除预降采样规则。
语法
drop_predownsample_statement ::= DROP PREDOWNSAMPLE time_interval
AGGREGATORS '('function_identifier ( ',' function_identifier) ')' ON table_identifier
time_interval ::= interval units参数说明
参数 | 说明 |
interval | 正整数,表示时间线聚合的时间窗口的数值。 |
units | 时间单位,包括s(秒)、m(分钟)、h(小时)、d(天)。 |
AGGREGATORS | 预降采样支持的聚合函数,取值如下:
说明 预降采样不支持使用avg函数,但可以通过count和sum函数计算平均值。如果存在覆盖写的情况,可能会出现数据重复相加导致平均值结果不精确。 |
function_identifier | 聚合函数名称。 说明 一条删除语句中可以包括一个或者多个具有相同降采样周期的聚合函数,您也可以将多个聚合函数拆分成多条删除语句。 |
table_identifier | 时序表名。 |
示例
DROP PREDOWNSAMPLE `1d` AGGREGATORS (`sum`, `max`) ON sensor;