Timescale Cloud:性能、规模、企业级
自托管产品
MST
为了更方便地在窗口函数和连续聚合中使用常见统计聚合,Timescale 提供了与 PostgreSQL 中可用形式略有不同的常见统计聚合。
此示例计算 measurements
表中某个值的平均值、标准差和峰度
SELECTtime_bucket('10 min'::interval, ts),average(stats_agg(val)),stddev(stats_agg(val), 'pop'),kurtosis(stats_agg(val), 'pop')FROM measurementsGROUP BY 1;
这使用两步聚合过程。第一步是聚合步骤(stats_agg(val)
),它创建聚合的机器可读形式。第二步是访问器。可用的访问器有 average
、stddev
和 kurtosis
。访问器运行最终计算并以人类可读的方式输出计算值。这使得查询的构造更容易,因为它区分了参数,并明确了哪些聚合正在被重新聚合或汇总。此外,由于所有 Timescale Toolkit 查询都使用这种查询语法,当您习惯后,您可以使用它来构造越来越复杂的查询。
一个更复杂的示例使用窗口函数来计算翻滚窗口统计聚合。统计聚合首先在子查询中按每分钟计算,然后使用 rolling
聚合在每个前 15 分钟周期内重新聚合。访问器与上一个示例相同
SELECTbucket,average(rolling(stats_agg) OVER fifteen_min),stddev(rolling(stats_agg) OVER fifteen_min, 'pop'),kurtosis(rolling(stats_agg) OVER fifteen_min, 'pop')FROM (SELECTtime_bucket('1 min'::interval, ts) AS bucket,stats_agg(val)FROM measurementsGROUP BY 1) AS statsWINDOW fifteen_min as (ORDER BY bucket ASC RANGE '15 minutes' PRECEDING);
有关两步聚合方法的更多技术细节和使用示例,请参阅关于聚合的博客文章或开发者文档
。
Timescale Cloud:性能、规模、企业级
自托管产品
MST
stats_agg
聚合有两种形式,本节前面介绍的一维聚合和二维聚合。二维聚合接受两个变量 (Y, X)
,它们分别是因变量和自变量。二维聚合对每个单独的变量执行与执行单独一维聚合相同的计算,此外还对这两个变量执行线性回归。一维值的访问器在名称后附加 _y
或 _x
。例如
SELECTaverage_y(stats_agg(val2, val1)), -- equivalent to average(stats_agg(val2))stddev_x(stats_agg(val2, val1)), -- equivalent to stddev(stats_agg(val1))slope(stats_agg(val2, val1)) -- the slope of the least squares fit line of the values in val2 & val1FROM measurements_multival;
有关统计聚合 API 调用的更多信息,请参阅 超函数 API 文档。
关键词