当前位置: 首页 > news >正文

TDengine 聚合函数 SPREAD 用户手册

在这里插入图片描述

SPREAD 函数用户手册

1. 函数概述

SPREAD 是 TDengine 的聚合函数,用于计算数值列的极差(最大值与最小值的差值)。该函数能够快速反映数据的分布范围和波动幅度,在智能电表监控中常用于分析电压、电流、功率等参数的波动程度。

2. 语法

SELECT SPREAD(column_name) FROM meters [WHERE condition];
-- 或用于窗口聚合
SELECT SPREAD(column_name) FROM meters [WHERE condition] INTERVAL(window_size);
  • column_name:需要计算极差的字段,必须为数值类型或时间戳类型
  • meters:智能电表超级表名
  • condition:可选,筛选数据的条件
  • window_size:如 1h1d,窗口聚合单位

3. 计算原理

SPREAD = MAX(column) - MIN(column)

SPREAD 函数通过计算数据集中的最大值和最小值的差来反映数据的分布范围。

4. 参数说明

  • 支持数据类型:数值类型(TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、UTINYINT、USMALLINT、UINT、UBIGINT)和时间戳类型
  • 返回值类型:DOUBLE
  • NULL 值处理:自动忽略 NULL 值
  • 特殊情况:如果所有值都为 NULL,返回 NULL

5. 为什么使用 SPREAD 函数?

  • 波动分析:快速了解数据的分布范围
  • 稳定性评估:SPREAD 值越小,数据越稳定
  • 异常检测:SPREAD 值异常增大可能表示存在异常数据
  • 质量监控:评估电力系统的稳定性和可靠性

6. 智能电表应用场景

基于智能电表数据库结构:

CREATE TABLE meters (ts TIMESTAMP,voltage FLOAT,current FLOAT,power FLOAT
) TAGS (groupid INT,location VARCHAR(50)
);

6.1 基础电压范围分析

-- 计算所有电表电压的分布范围
SELECT SPREAD(voltage) AS voltage_range FROM meters;-- 计算电流的分布范围
SELECT SPREAD(current) AS current_range FROM meters;-- 计算功率的分布范围
SELECT SPREAD(power) AS power_range FROM meters;

6.2 按区域分析电力参数范围

-- 按地区分析电压波动范围
SELECT location,SPREAD(voltage) AS voltage_spread,MIN(voltage) AS min_voltage,MAX(voltage) AS max_voltage,AVG(voltage) AS avg_voltage
FROM meters 
GROUP BY location;

6.3 按设备组分析

-- 按设备组分析电流波动范围
SELECT groupid,location,SPREAD(current) AS current_spread,COUNT(*) AS measurement_count
FROM meters 
GROUP BY groupid, location;

6.4 时间窗口内的波动分析

-- 每小时电压波动范围
SELECT SPREAD(voltage) AS hourly_voltage_spread,MIN(voltage) AS hourly_min_voltage,MAX(voltage) AS hourly_max_voltage
FROM meters 
INTERVAL(1h);-- 每日功率波动范围
SELECT SPREAD(power) AS daily_power_spread,AVG(power) AS daily_avg_power
FROM meters 
INTERVAL(1d);

6.5 电网质量监控

-- 监控电压质量(每10分钟统计)
SELECT location,SPREAD(voltage) AS voltage_spread
FROM meters 
WHERE ts >= NOW() - 24h
INTERVAL(10m) 
GROUP BY location;

6.6 设备稳定性评估

-- 评估设备运行稳定性
SELECT location,groupid,SPREAD(voltage) AS voltage_stability,SPREAD(current) AS current_stability,SPREAD(power) AS power_stability,CASE WHEN SPREAD(voltage) < 5.0 AND SPREAD(current) < 2.0 THEN '运行稳定'WHEN SPREAD(voltage) < 10.0 AND SPREAD(current) < 5.0 THEN '运行正常'ELSE '波动较大'END AS stability_status
FROM meters 
WHERE ts >= NOW() - 7d
GROUP BY location, groupid;

6.7 异常波动检测

-- 检测电压波动异常的设备组
SELECT groupid,location,SPREAD(voltage) AS voltage_spread,COUNT(*) AS sample_count
FROM (SELECT groupid,location,SPREAD(voltage) AS voltage_spread,COUNT(*) AS sample_countFROM meters WHERE ts >= NOW() - 1hGROUP BY groupid, location
) 
WHERE voltage_spread > 15.0;

6.8 负载波动分析

-- 分析不同时段的负载波动
-- 白天时段(使用具体时间范围)
SELECT location,SPREAD(power) AS daytime_power_spread,AVG(power) AS daytime_avg_power
FROM meters 
WHERE ts >= '2024-09-22 06:00:00' AND ts < '2024-09-22 18:00:00'
GROUP BY location;-- 夜间时段
SELECT location,SPREAD(power) AS nighttime_power_spread,AVG(power) AS nighttime_avg_power
FROM meters 
WHERE ts >= '2024-09-22 19:00:00' AND ts <= '2024-09-22 23:59:59'
GROUP BY location;

6.9 电力参数相关性分析

-- 分析电压、电流、功率的波动关系
SELECT location,SPREAD(voltage) AS voltage_spread,SPREAD(current) AS current_spread,SPREAD(power) AS power_spread,SPREAD(voltage) / AVG(voltage) * 100 AS voltage_cv_percent,SPREAD(current) / AVG(current) * 100 AS current_cv_percent
FROM meters 
WHERE ts >= NOW() - 24h
GROUP BY location;

6.10 按分区统计设备波动情况

-- 统计每个设备的波动情况
SELECT location,groupid,SPREAD(voltage) AS voltage_range,SPREAD(current) AS current_range,SPREAD(power) AS power_range
FROM meters 
WHERE ts >= NOW() - 7d
PARTITION BY location, groupid;

7. 实际应用价值

7.1 电网运维

  • 电压质量监控:SPREAD 值可以反映电压稳定性
  • 设备健康评估:波动范围异常可能表示设备故障
  • 负载平衡:分析不同区域的负载分布差异

7.2 能效优化

  • 用电模式分析:了解不同时段的用电波动特征
  • 节能效果评估:对比节能措施前后的波动变化

7.3 故障预警

  • 异常检测:SPREAD 值突然增大可能预示故障
  • 趋势监控:长期波动趋势分析

8. 性能优化建议

8.1 时间范围限制

-- 推荐:指定时间范围
SELECT SPREAD(voltage) FROM meters 
WHERE ts >= NOW() - 24h;-- 避免:无条件全表统计
SELECT SPREAD(voltage) FROM meters;

8.2 合理使用分组

-- 推荐:按标签分组
SELECT location,SPREAD(voltage) AS voltage_spread
FROM meters 
WHERE ts >= NOW() - 24h
GROUP BY location;

9. 注意事项

  1. 数据类型:仅支持数值类型和时间戳类型
  2. 返回值:始终返回 DOUBLE 类型
  3. NULL 值:自动忽略,不影响计算结果
  4. 最小数据量:至少需要一个有效数值
  5. 时间范围:建议合理设置时间范围以提升性能
  6. 窗口聚合:支持 INTERVAL 时间窗口聚合
  7. 分区支持:支持 PARTITION BY 子句

SPREAD 函数提供了最直观的数据分布范围信息,是评估智能电表数据稳定性的重要工具。通过合理使用该函数,可以有效监控电力系统的运行状态,及时发现异常情况。

关于 TDengine

TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

http://www.dtcms.com/a/395839.html

相关文章:

  • 4090 云服务器租赁:高性能与灵活性的算力融合方案​
  • 阿里云服务器ECS上安装anaconda(jupyter)和OpenCV教程
  • CVE-2025–3246 本地提权
  • Chat API和Chat SDK
  • 爱奇艺技术实践:基于 StarRocks 释放天玑买量数据价值
  • 突破传统文本切分桎梏!基于语义理解的智能文档处理革命——AntSK-FileChunk深度技术解析
  • Git常用的使用方法
  • IDEA集成Claude Code (win系统)
  • MySQL执行计划:索引为何失效?如何避免?
  • 【附源码】基于SpringBoot的校园防汛物资管理平台的设计与实现
  • PyTorch 核心工具与模型搭建
  • ARM--时钟管理单元与定时器
  • Unity-动画基础
  • 逻辑回归中的决策边界解析与应用实例
  • 设计模式——结构型模式(下)
  • CANoe中封装SeedKey安全解锁函数的完整指南
  • Vue树选择
  • opencv人脸识别
  • 怿星科技桂林子公司乔迁新址,于山水画中开启研发新篇章
  • 创建者模式:工厂方法模式
  • 【 C/C++ 算法】入门动态规划-----路径问题(以练代学式)
  • 三.上网行为安全
  • k个一组翻转链表
  • Super分区和动态分区
  • 2026华清远见新品发布会:聚焦人工智能嵌入式物联网,打造“虚实融合•软硬协同“智能化教育新生态!
  • 09 - spring security加载流程
  • 【大前端】Android:读取剪切板与禁用剪切板复制功能(完整指南)
  • 第18讲 机器学习与深度学习
  • 数据结构 05(线性:栈和队列)
  • RAG系统嵌入模型怎么选?选型策略和踩坑指南