TDengine 时序函数 TWA 用户手册
TWA 函数用户手册
1. 函数概述
TWA(expr)
功能说明:时间加权平均函数。统计表中某列在一段时间内的时间加权平均。对于存在复合主键的表的查询,若时间戳相同的数据存在多条,则只有对应的复合主键最小的数据参与运算。
返回数据类型:DOUBLE。
适用数据类型:数值类型。
适用于:表和超级表。
2. 函数意义及应用范围
-
意义
对时序数据按每个采样点到下一个采样点的时间间隔赋予权重,平滑瞬时跳变和不等距采样带来的偏差,更真实地反映指标在整个窗口内的「平均水平」。 -
应用场景
- 智能电表:电压/电流/功率滚动趋势分析
- 能耗评估:按小时/天统计加权平均功率,指导计费与节能
- 供电稳定性监测:对频率、相位做滚动平均,过滤噪声
- 负荷预测与报警:基于历史窗口的加权平均判断突发波动或持续异常
3. 参数说明
- expr
- 必需
- 数值类型列或表达式
4. 返回值类型
- DOUBLE
5. 使用说明
- 必须保证源数据按时间戳 (
ts
) 升序 - 只能在 SELECT 列表中出现一次
- 不能在 WHERE 直接使用 TWA 进行过滤(请用子查询)
- 对超级表查询需加
PARTITION BY
分区
6. 加权平均简介
6.1 专业公式
加权平均的通用公式:
加权平均 = (Σ w_i × x_i) / (Σ w_i)
对于 TWA,权重 w_i 为当前点到下一个点的时间间隔 Δt_i,计算时对窗口内所有 Δt_i × 对应值求和,再除以窗口总时长 ΣΔt_i。
6.2 通俗描述
想象你在两个坡道上滚动小球:
- 坡道 A 持续时间长,但速度较慢
- 坡道 B 持续时间短,但速度较快
如果简单平均 A、B 两个速度,会低估 B 的影响;而时间加权平均则按每段持续时间加权,还原小球在整体旅程中的真实平均速度。
同理,TWA 把每个采样值放大到它在窗口内“存在”的时间长度,再算平均——这样短暂的峰值或空档对最终结果影响更小,更贴合参数在该时间段的真实变化。
7. 计算过程与返回值说明
示例数据(每 15 分钟采样一次):
ts | voltage |
---|---|
10:00:00 | 230.0 |
10:15:00 | 240.0 |
10:30:00 | 250.0 |
10:45:00 | 245.0 |
11:00:00 | 235.0 |
- 对 11:00:00 行执行
TWA(voltage)
(窗口为整个查询区间或当前 GROUP BY TIME 窗口):- 取窗口 [10:00,11:00] 内所有点
- 计算各段
value × Δt
并累加:- 10:00–10:15 → 230 × 15
- 10:15–10:30 → 240 × 15
- 10:30–10:45 → 250 × 15
- 10:45–11:00 → 245 × 15
- 除以总时长 60 →
(230+240+250+245)×15 / 60 = 241.25
SELECTTWA(voltage)
FROM d1;
ts | voltage | voltage_twa_1h |
---|---|---|
10:00:00 | 230.0 | 230.00 |
10:15:00 | 240.0 | 235.00 |
10:30:00 | 250.0 | 240.00 |
10:45:00 | 245.0 | 241.25 |
11:00:00 | 235.0 | 241.25 |
8. 使用示例
-- 1)单区间加权平均
SELECT TWA(voltage) AS twa_valFROM d1-- 2)与 GROUP BY
SELECT tbname, TWA(voltage) AS voltage_twa_1h
FROM meters
GROUP BY tbname;--3) 超级表分区
SELECT tbname,TWA(voltage) FROM meters PARTITION BY tbname;--4) UNION ALL
SELECT TWA(voltage) FROM d1
UNION ALL
SELECT TWA(voltage) FROM d2--5) JOIN 多表 d1 d2 为超级表 meters 下两子表
SELECTTWA(d1.voltage),TWA(d2.voltage)
FROM d1
JOIN d2 ON d1.ts = d2.ts;--6) 混合函数
SELECT tbname,MAX(voltage),TWA(voltage)
FROM meters
PARTITION BY tbname;
关于 TDengine
TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。
它能安全高效地将大量设备每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,并提供 AI 智能体对数据进行预测与异常检测,提供实时的商业洞察。