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

TDengine 聚合函数 ELAPSED 用户手册

在这里插入图片描述

ELAPSED 函数用户手册

函数概述

ELAPSED 函数是 TDengine 中的聚合函数,用于计算查询时间范围内数据的时间跨度。该函数只能应用于主键时间戳列,返回第一条记录与最后一条记录之间的时间差。在智能电表场景中,常用于分析用电持续时间、数据采集间隔、设备运行周期等。

基本语法

SELECT ELAPSED(column_name [, time_unit]) FROM meters [WHERE clause] [GROUP BY clause]

参数说明

  • column_name: 必须是主键时间戳列(通常为 ts
  • time_unit: 可选参数,指定返回结果的时间单位
    • 1s: 秒(默认)
    • 1m: 分钟
    • 1h: 小时
    • 1d: 天
    • 1w: 周
    • 1u: 微秒(仅毫秒精度及以上支持)
    • 1b: 纳秒(仅纳秒精度支持)

返回值

  • 返回类型:DOUBLE
  • 当查询结果只有一条记录或为空时,返回 0
  • 当查询结果有多条记录时,返回时间跨度(按指定单位)

智能电表应用场景

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

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

1. 基本用法

-- 计算电表数据的时间跨度(秒)
SELECT ELAPSED(ts) FROM meters;-- 指定时间单位为分钟
SELECT ELAPSED(ts, 1m) FROM meters;-- 指定时间单位为小时  
SELECT ELAPSED(ts, 1h) FROM meters;-- 指定时间单位为天
SELECT ELAPSED(ts, 1d) FROM meters;

2. 电表数据采集监控

数据采集时间跨度分析
-- 计算过去24小时内数据采集的时间跨度
SELECT ELAPSED(ts, 1h) AS collection_hours FROM meters 
WHERE ts >= NOW() - 24h;-- 分析某个区域电表数据的采集周期
SELECT ELAPSED(ts, 1m) AS collection_minutes FROM meters 
WHERE location = 'California.SanFrancisco' AND ts >= NOW() - 2h;
按设备组分析采集情况
-- 各设备组数据采集时间跨度
SELECT groupid,location,ELAPSED(ts, 1h) AS data_span_hours,COUNT(*) AS record_count
FROM meters 
WHERE ts >= NOW() - 24h
GROUP BY groupid, location;

3. 用电持续时间分析

高负荷用电时长统计
-- 计算功率超过阈值的持续时间
SELECT ELAPSED(ts, 1h) AS high_load_hours FROM meters 
WHERE power > 5000 AND ts >= NOW() - 7d;-- 按区域统计高负荷用电时长
SELECT location,ELAPSED(ts, 1h) AS high_voltage_hours
FROM meters 
WHERE voltage > 240 AND ts >= NOW() - 30d
GROUP BY location;
异常用电持续时间
-- 电压异常的持续时间分析
SELECT ELAPSED(ts, 1m) AS abnormal_voltage_minutes FROM meters 
WHERE (voltage < 200 OR voltage > 250)AND ts >= NOW() - 24h;-- 电流异常持续时间统计
SELECT ELAPSED(ts, 1s) AS abnormal_current_seconds FROM meters 
WHERE current > 50 AND location = 'California.LosAngles'AND ts >= NOW() - 6h;

4. 时间窗口分析

每小时数据跨度监控
-- 每小时内数据的时间跨度
SELECT ELAPSED(ts, 1s) AS hourly_span_seconds 
FROM meters 
WHERE ts >= NOW() - 24h
INTERVAL(1h);
每日数据完整性检查
-- 每日数据采集的时间跨度
SELECT ELAPSED(ts, 1h) AS daily_data_hours
FROM meters 
WHERE ts >= NOW() - 30d
INTERVAL(1d);

5. 设备运行状态分析

设备在线时长统计
-- 计算各电表设备的在线时长(基于数据上报)
SELECT ELAPSED(ts, 1h) AS online_hours FROM meters 
WHERE ts >= NOW() - 7d
PARTITION BY groupid, location;
连续运行时间分析
-- 电表连续正常运行时间(电压在正常范围内)
SELECT ELAPSED(ts, 1d) AS normal_operation_days FROM meters 
WHERE voltage BETWEEN 210 AND 240 AND current > 0 AND ts >= NOW() - 90d;

6. 电网稳定性监控

电压稳定期分析
-- 电压在稳定范围内的持续时间
SELECT location,ELAPSED(ts, 1h) AS stable_voltage_hours
FROM meters 
WHERE voltage BETWEEN 218 AND 222 AND ts >= NOW() - 7d
GROUP BY location;
负载稳定时长统计
-- 功率在正常范围内的持续时间
SELECT ELAPSED(ts, 1m) AS stable_power_minutes FROM meters 
WHERE power BETWEEN 1000 AND 8000 AND ts >= NOW() - 24h;

7. 用电模式分析

白天用电时长
-- 白天时段(6:00-18:00)的用电时长
SELECT ELAPSED(ts, 1h) AS daytime_usage_hours FROM meters 
WHERE ts >= '2024-09-22 06:00:00' AND ts < '2024-09-22 18:00:00'AND power > 500;
夜间用电时长
-- 夜间时段(19:00-05:00)的用电时长
SELECT ELAPSED(ts, 1h) AS nighttime_usage_hours FROM meters 
WHERE ((ts >= '2024-09-22 19:00:00' AND ts <= '2024-09-22 23:59:59')OR (ts >= '2024-09-22 00:00:00' AND ts < '2024-09-22 06:00:00'))AND power > 100;

8. 数据质量监控

数据上报间隔检查
-- 检查数据上报的时间间隔是否正常
SELECT location,groupid,ELAPSED(ts, 1s) AS reporting_span_seconds,COUNT(*) AS record_count,ELAPSED(ts, 1s) / COUNT(*) AS avg_interval_seconds
FROM meters 
WHERE ts >= NOW() - 1h
GROUP BY location, groupid;
数据完整性评估
-- 评估数据采集的完整性(理想情况下应该接近时间窗口长度)
SELECT ELAPSED(ts, 1h) AS actual_span_hours,24 AS expected_span_hours,ELAPSED(ts, 1h) / 24 * 100 AS completeness_percent
FROM meters 
WHERE ts >= NOW() - 24h;

9. 与其他聚合函数组合

综合统计分析
-- 综合分析电表运行情况
SELECT location,COUNT(*) AS total_records,AVG(voltage) AS avg_voltage,AVG(current) AS avg_current,AVG(power) AS avg_power,ELAPSED(ts, 1h) AS monitoring_hours
FROM meters 
WHERE ts >= NOW() - 24h
GROUP BY location;
性能指标统计
-- 电表性能综合评估
SELECT groupid,MIN(voltage) AS min_voltage,MAX(voltage) AS max_voltage,STDDEV(current) AS current_stability,ELAPSED(ts, 1d) AS monitoring_days
FROM meters 
WHERE ts >= NOW() - 30d
GROUP BY groupid;

10. 嵌套查询应用

最长连续运行时间
-- 查找最长的连续数据采集时间
SELECT MAX(span_hours) AS max_continuous_hours
FROM (SELECT ELAPSED(ts, 1h) AS span_hours FROM meters WHERE voltage > 0 GROUP BY groupid, location
);
数据采集效率分析
-- 分析数据采集效率
SELECT location,AVG(collection_span) AS avg_collection_span_minutes
FROM (SELECT location,ELAPSED(ts, 1m) AS collection_spanFROM meters WHERE ts >= NOW() - 7dGROUP BY location, DATE(ts)
) 
GROUP BY location;

实际应用价值

1. 运维管理

  • 设备监控:通过 ELAPSED 分析设备在线时长和数据上报连续性
  • 故障诊断:识别数据中断或异常的时间段
  • 维护调度:基于设备运行时长制定维护计划

2. 电网管理

  • 稳定性评估:分析电压、电流等参数的稳定持续时间
  • 负荷管理:统计高负荷和低负荷的持续时间
  • 质量监控:评估电网供电质量的时间分布

3. 数据治理

  • 完整性检查:验证数据采集的时间连续性
  • 质量评估:分析数据上报的及时性和规律性
  • 异常检测:发现数据中断或采集异常

使用限制

1. 列限制

-- ❌ 错误用法:不能用于非时间戳列
SELECT ELAPSED(voltage) FROM meters;
SELECT ELAPSED(groupid) FROM meters;-- ✅ 正确用法:只能用于时间戳列
SELECT ELAPSED(ts) FROM meters;

2. 超级表


-- ✅ 正确用法:使用 PARTITION BY 或 GROUP BY
SELECT ELAPSED(ts) FROM meters PARTITION BY groupid, location;

3. 嵌套限制

-- ❌ 错误用法:不能嵌套在聚合函数中
SELECT AVG(ELAPSED(ts)) FROM meters;
SELECT ELAPSED(MAX(ts)) FROM meters;-- ✅ 正确用法:外层使用聚合函数
SELECT MAX(span_hours) FROM (SELECT ELAPSED(ts, 1h) AS span_hours FROM meters GROUP BY groupid
);

性能优化建议

1. 合理设置时间范围

-- 推荐:指定合适的时间范围
SELECT ELAPSED(ts, 1h) FROM meters 
WHERE ts >= NOW() - 24h;-- 避免:过大的时间范围查询
SELECT ELAPSED(ts, 1h) FROM meters;  -- 可能影响性能

2. 利用分区查询

-- 推荐:按标签分区提高效率
SELECT ELAPSED(ts, 1h) FROM meters 
WHERE location = 'California.SanFrancisco'
PARTITION BY groupid;

3. 结合时间窗口

-- 推荐:使用 INTERVAL 进行时间窗口分析
SELECT ELAPSED(ts, 1s) FROM meters 
WHERE ts >= NOW() - 7d
INTERVAL(1h);

关于 TDengine

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

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

相关文章:

  • Android音频学习(二十)——高通HAL
  • C#练习题——Lambad表达式的应用
  • Polar WEB(1-20)
  • 湖州做网站公司哪家好温州市网站制作公司
  • NW973NW976美光固态闪存NW982NW987
  • 软件测试 - 接口测试(中篇)
  • 项目进不了index.php,访问public下的html文件可以进去
  • 得力D31系列M2500 M3100 ADNW激光打印机维修手册
  • 信誉好的东莞网站推广从网站验证码谈用户体验
  • Spring Boot中Bean Validation的groups属性深度解析
  • Linux进程(2)
  • C++:String类
  • 金华网站开发杭州自适应网站建设
  • ROS (无人机、机器人)与外部系统对接
  • 苏州市吴江住房和城乡建设局网站书籍网站设计
  • Pytorch工具箱2
  • 物业网站开发wordpress英文博客模板下载
  • 光影(1)
  • iOS 混淆与机器学习模型保护 在移动端保密权重与推理逻辑的实战指南(iOS 混淆、模型加密、ipa 加固)
  • Axios的快速入门
  • 网站建设品牌公司排名网页游戏4399在线游戏
  • 木渎建设局网站哪个网站可以做加工代理的
  • 培训班小程序模板如何一键套用,分享微信小程序的制作方法
  • 陕西做天然气公司网站网站如何做的有特色
  • 娱乐网站的代理怎么做WordPress 短码转换
  • Unity - Spine
  • Spring依赖注入方式
  • 宏升温岭网站建设扁平化网站源码
  • 网站页面架构图网站定制开发 广州
  • 做html网站搜索框代码网站关键词如何做优化