TDengine 聚合函数 STDDEV_POP 用户手册
STDDEV_POP 函数用户手册(智能电表场景)
1. 函数概述
STDDEV_POP
函数计算指定列的总体标准差(Population Standard Deviation)。标准差是衡量数据分布离散程度的重要统计指标,STDDEV_POP 假定输入数据代表整个总体,而不是样本。
2. 函数语法
STDDEV_POP(expr)
参数说明:
expr
:数值类型的列名或表达式,支持 TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 等数值类型
返回值:
- 返回 DOUBLE 类型的总体标准差值
- 如果所有输入值都为 NULL 或没有有效数据,则返回 NULL
3. 函数意义与作用
3.1 为什么需要 STDDEV_POP 函数
在统计学中,标准差有两种计算方式:
- 总体标准差(Population Standard Deviation):分母为 N,用于描述整个总体的离散程度
- 样本标准差(Sample Standard Deviation):分母为 N-1,用于估计总体标准差
STDDEV_POP 函数专门用于计算总体标准差,当我们拥有完整的总体数据时使用。
3.2 统计学公式
总体标准差的计算公式为:
σ = √(Σ(xi - μ)² / N)
其中:
- σ:总体标准差
- xi:第 i 个数据值
- μ:总体均值
- N:数据总数
4. 智能电表应用场景
基于智能电表数据库结构:
CREATE TABLE meters (ts TIMESTAMP,voltage FLOAT,current FLOAT,power FLOAT
) TAGS (groupid int,location VARCHAR(50)
);
4.1 基础示例
电压稳定性分析
-- 计算所有电表电压的总体标准差
SELECT STDDEV_POP(voltage) as voltage_stddev_pop FROM meters;-- 计算电流的总体标准差
SELECT STDDEV_POP(current) as current_stddev_pop FROM meters;-- 计算功率的总体标准差
SELECT STDDEV_POP(power) as power_stddev_pop FROM meters;
按区域分组分析
-- 按地区计算各自的电压标准差
SELECT location,STDDEV_POP(voltage) as voltage_stddev_pop,AVG(voltage) as avg_voltage,COUNT(*) as data_points
FROM meters
GROUP BY location;
按设备组分析
-- 按设备组计算电流稳定性
SELECT groupid,STDDEV_POP(current) as current_stddev_pop,AVG(current) as avg_current,COUNT(*) as measurements
FROM meters
GROUP BY groupid;
4.2 时间窗口分析
每小时电压稳定性
-- 分析每小时内电压的稳定性
SELECT STDDEV_POP(voltage) as hourly_voltage_stddev,AVG(voltage) as hourly_avg_voltage,MAX(voltage) - MIN(voltage) as voltage_range
FROM meters
INTERVAL(1h);
每日功率波动分析
-- 计算每日功率波动情况
SELECT STDDEV_POP(power) as daily_power_stddev,AVG(power) as daily_avg_power
FROM meters
INTERVAL(1d);
4.3 电网质量监控
电压质量评估
-- 识别电压波动异常的时间段(每10分钟统计)
SELECT STDDEV_POP(voltage) as voltage_stability,CASE WHEN STDDEV_POP(voltage) > 5.0 THEN '电压不稳定'WHEN STDDEV_POP(voltage) > 2.0 THEN '电压轻微波动'ELSE '电压稳定'END as stability_level
FROM meters
INTERVAL(10m)
HAVING STDDEV_POP(voltage) > 1.0;
按区域电网质量对比
-- 对比不同区域的电网质量
SELECT location,STDDEV_POP(voltage) as voltage_stddev,STDDEV_POP(current) as current_stddev,STDDEV_POP(power) as power_stddev
FROM meters
WHERE ts >= NOW() - 24h
GROUP BY location;
4.4 设备运行状态分析
多指标综合分析
-- 同时分析多个电力参数的稳定性
SELECT location,groupid,STDDEV_POP(voltage) as voltage_stddev,STDDEV_POP(current) as current_stddev,STDDEV_POP(power) as power_stddev,-- 计算变异系数(标准差/均值)STDDEV_POP(voltage) / AVG(voltage) * 100 as voltage_cv_percent,STDDEV_POP(current) / AVG(current) * 100 as current_cv_percent
FROM meters
WHERE ts >= NOW() - 7d
GROUP BY location, groupid;
设备健康状态评估
-- 评估设备健康状态
SELECT location,groupid,COUNT(*) as measurement_count,STDDEV_POP(voltage) as voltage_stability,STDDEV_POP(current) as current_stability,CASE WHEN STDDEV_POP(voltage) < 1.0 AND STDDEV_POP(current) < 0.5 THEN '设备运行良好'WHEN STDDEV_POP(voltage) < 3.0 AND STDDEV_POP(current) < 1.0 THEN '设备运行正常'ELSE '设备需要检查'END as device_status
FROM meters
WHERE ts >= NOW() - 30d
GROUP BY location, groupid;
4.5 负载分析
用电模式稳定性
-- 分析不同时段的用电稳定性
-- 白天时段(6:00-18:00)
SELECT location,STDDEV_POP(power) as daytime_power_stddev,AVG(power) as daytime_avg_power
FROM meters
WHERE ts >= '2024-09-20 06:00:00' AND ts < '2024-09-20 18:00:00'
GROUP BY location;-- 夜间时段(19:00-23:59)
SELECT location,STDDEV_POP(power) as nighttime_power_stddev,AVG(power) as nighttime_avg_power
FROM meters
WHERE ts >= '2024-09-20 19:00:00' AND ts <= '2024-09-20 23:59:59'
GROUP BY location;-- 深夜时段(00:00-5:59)
SELECT location,STDDEV_POP(power) as late_night_power_stddev,AVG(power) as late_night_avg_power
FROM meters
WHERE ts >= '2024-09-20 00:00:00' AND ts < '2024-09-20 06:00:00'
GROUP BY location;
4.6 异常检测应用
电力参数异常监控
-- 检测最近一小时内异常波动的设备组
SELECT groupid,location,voltage_stddev,current_stddev,sample_count
FROM (SELECT groupid,location,STDDEV_POP(voltage) as voltage_stddev,STDDEV_POP(current) as current_stddev,COUNT(*) as sample_countFROM meters WHERE ts >= NOW() - 1hGROUP BY groupid, location
)
WHERE voltage_stddev > 3.0 OR current_stddev > 1.0;
5. STDDEV_POP 与 STDDEV 的区别
5.1 计算公式差异
函数 | 计算公式 | 分母 | 用途 |
---|---|---|---|
STDDEV_POP | σ = √(Σ(xi - μ)² / N) | N | 总体标准差 |
STDDEV | s = √(Σ(xi - x̄)² / (N-1)) | N-1 | 样本标准差 |
5.2 使用场景对比
使用 STDDEV_POP 的场景:
- 拥有完整的总体数据(如:所有电表的完整数据)
- 描述当前数据集的实际离散程度
-- 适用于总体分析:分析某区域所有电表的电压分布
SELECT STDDEV_POP(voltage) as population_stddev
FROM meters
WHERE location = 'Beijing' AND ts >= NOW() - 24h;
使用 STDDEV 的场景:
- 样本数据推断总体特征
- 统计推断和假设检验
-- 适用于样本分析:从部分电表推断总体情况
SELECT STDDEV(voltage) as sample_stddev
FROM meters
WHERE groupid IN (1, 3, 5) -- 选择部分设备组作为样本AND ts >= NOW() - 24h;
6. 性能优化建议
6.1 时间范围限制
-- 推荐:指定时间范围
SELECT STDDEV_POP(voltage) FROM meters
WHERE ts >= NOW() - 24h;-- 不推荐:无条件全表统计(数据量很大时)
SELECT STDDEV_POP(voltage) FROM meters;
6.2 合理使用分组
-- 推荐:按标签分组减少计算量
SELECT location,STDDEV_POP(voltage) as voltage_stddev
FROM meters
WHERE ts >= NOW() - 24h
GROUP BY location;
7. 注意事项
- NULL 值处理:函数自动忽略 NULL 值,只计算有效数值
- 数据类型:输入必须是数值类型,结果始终为 DOUBLE 类型
- 内存使用:大数据集计算时会消耗较多内存
- 时间范围:建议合理设置时间范围,避免全表扫描
- 应用选择:根据分析目的选择合适的标准差函数
8. 总结
STDDEV_POP 函数在智能电表监控系统中具有重要价值:
- 电网质量监控:评估电压、电流稳定性
- 设备健康管理:监控设备运行状态
- 负载分析:分析用电模式的稳定性
- 异常检测:及时发现设备或电网异常
- 区域对比:对比不同区域的电力质量
通过合理使用 STDDEV_POP 函数,可以有效地进行智能电表数据的稳定性分析,为电力系统运维和优化提供重要的数据支撑。
相关函数
- TDengine 时序函数 DIFF 用户手册
- TDengine 聚合函数 LEASTSQUARES 用户手册
- TDengine 聚合函数 COUNT 用户手册
- TDengine 聚合函数 AVG 用户手册
- TDengine 特殊选择函数 MODE 用户手册
关于 TDengine
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。