CREATE PREDOWNSAMPLE
创建预降采样规则用于产生预降采样数据。
引擎与版本
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;