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

TDengine 选择函数 TAIL() 用户手册

在这里插入图片描述

TAIL 函数用户手册

函数定义

TAIL(expr, k [, offset_rows])

功能说明

TAIL() 函数返回跳过最后 offset_rows 个记录,然后取连续 k 个记录,不忽略 NULL 值。offset_rows 可以不输入,此时返回最后的 k 个记录。当有 offset_rows 输入的情况下,该函数功能等效于 ORDER BY ts DESC LIMIT k OFFSET offset_rows

版本要求

  • 最低版本: v3.0.0.0

返回值

  • 数据类型: 与输入参数相同的数据类型
  • 返回内容: 符合条件的最后 k 条记录

参数说明

参数类型说明取值范围
expr表达式要查询的字段表达式除时间主键列外的任何类型
k整数要返回的记录数量[1, 100]
offset_rows整数要跳过的记录数量(可选)[0, 100]

适用数据类型

根据源码分析,TAIL 函数支持以下数据类型:

  • 所有数据类型: 除时间主键列外的任何类型
  • NULL 值: 不忽略 NULL 值,会包含在结果中

适用范围

  • 表类型: 表和超级表
  • 查询支持: 支持选择查询、多行返回
  • 函数特性: 选择函数、多行函数、隐式时间戳函数

基本用法示例

基本语法

-- 返回最后 5 条记录
SELECT TAIL(current, 5) FROM meters;-- 跳过最后 2 条记录,然后返回之前的 3 条记录
SELECT TAIL(voltage, 3, 2) FROM meters;-- 返回最后 10 条记录的相位值
SELECT TAIL(phase, 10) FROM meters;

多列查询

-- 返回多个字段的最后 5 条记录
SELECT TAIL(current, 5) as tail_current,TAIL(voltage, 5) as tail_voltage,TAIL(phase, 5) as tail_phase
FROM meters;

与时间戳结合

-- 返回最后 5 条记录及其时间戳
SELECT ts,TAIL(current, 5) as last_current
FROM meters;

智能电表场景应用示例

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

-- 数据库和表结构
USE test;
-- meters 超级表包含 ts, current, voltage, phase 字段和 location, groupid 标签

场景1:获取最新数据

-- 获取每个电表的最后 10 条电流记录
SELECT tbname,TAIL(current, 10) as recent_current,TAIL(ts, 10) as record_times
FROM meters 
GROUP BY tbname;

场景2:数据质量检查

-- 检查最近 5 条记录中的数据完整性
SELECT tbname,location,TAIL(current, 5) as recent_current,TAIL(voltage, 5) as recent_voltage,TAIL(phase, 5) as recent_phase
FROM meters 
GROUP BY tbname, location;

场景3:异常检测

-- 获取最近 20 条记录用于异常检测
SELECT tbname,location,TAIL(current, 20) as current_history,TAIL(voltage, 20) as voltage_history
FROM meters 
GROUP BY tbname, location
ORDER BY tbname;

场景4:跳过最新记录的分析

-- 跳过最后 5 条记录,获取之前的 10 条记录
-- 用于排除可能的异常最新数据
SELECT tbname,TAIL(current, 10, 5) as stable_current,TAIL(voltage, 10, 5) as stable_voltage
FROM meters 
GROUP BY tbname;

场景5:按区域分析历史数据

-- 获取每个区域最近的记录样本
SELECT location,TAIL(current, 15) as regional_current_sample,TAIL(voltage, 15) as regional_voltage_sample
FROM meters 
GROUP BY location;

场景6:负载趋势分析

-- 获取最近 30 条记录用于负载趋势分析
SELECT tbname,location,TAIL(current, 30) as load_trend_data,TAIL(ts, 30) as trend_timestamps
FROM meters 
GROUP BY tbname, location
HAVING COUNT(*) >= 30;  -- 只返回有足够数据的设备

场景7:设备状态监控

-- 获取最近记录,排除最新的 3 条(可能包含传输中的数据)
SELECT tbname,location,TAIL(current, 5, 3) as confirmed_current,TAIL(voltage, 5, 3) as confirmed_voltage,TAIL(phase, 5, 3) as confirmed_phase
FROM meters 
GROUP BY tbname, location;

场景8:数据采样

-- 获取不同时间段的数据样本
-- 最近的数据样本
SELECT 'latest' as sample_type,location,TAIL(current, 10) as current_sample
FROM meters 
GROUP BY locationUNION ALL-- 跳过最近 50 条,获取更早的样本
SELECT 'earlier' as sample_type,location,TAIL(current, 10, 50) as current_sample
FROM meters 
GROUP BY location;

场景9:设备性能评估

-- 获取最近的性能数据进行评估
SELECT tbname,location,TAIL(current, 20) as performance_current,TAIL(voltage, 20) as performance_voltage,COUNT(*) as total_records
FROM meters 
GROUP BY tbname, location
ORDER BY location, tbname;

场景10:故障诊断数据准备

-- 为故障诊断准备最近的设备数据
SELECT tbname,location,groupid,TAIL(current, 25) as diagnostic_current,TAIL(voltage, 25) as diagnostic_voltage,TAIL(phase, 25) as diagnostic_phase,TAIL(ts, 25) as diagnostic_timestamps
FROM meters 
WHERE location = 'Beijing'  -- 特定区域的设备
GROUP BY tbname, location, groupid;

与 ORDER BY LIMIT 的对比

-- TAIL 函数方式
SELECT TAIL(current, 5) FROM meters WHERE tbname = 'meter001';-- 等效的 ORDER BY LIMIT 方式
SELECT current FROM meters 
WHERE tbname = 'meter001' 
ORDER BY ts DESC 
LIMIT 5;-- 带偏移的 TAIL 函数
SELECT TAIL(current, 3, 2) FROM meters WHERE tbname = 'meter001';-- 等效的 ORDER BY LIMIT OFFSET 方式
SELECT current FROM meters 
WHERE tbname = 'meter001' 
ORDER BY ts DESC 
LIMIT 3 OFFSET 2;

注意事项

  1. 参数范围: k 值取值范围为 [1, 100],offset_rows 取值范围为 [0, 100]
  2. NULL 值处理: TAIL 函数不忽略 NULL 值,会包含在返回结果中
  3. 数据类型限制: 不能用于时间主键列
  4. 返回顺序: 返回的记录按照时间戳倒序排列(最新的在前)
  5. 性能考虑: 在大表上使用时建议配合适当的 WHERE 条件过滤
  6. 分组查询: 与 GROUP BY 配合使用时,每个分组返回各自的最后 k 条记录

相关函数

  • FIRST(): 返回最先写入的非 NULL 值
  • LAST(): 返回最后写入的非 NULL 值
  • LAST_ROW(): 返回最后一条记录
  • TOP(): 返回最大的 k 个值
  • BOTTOM(): 返回最小的 k 个值
  • SAMPLE(): 返回随机采样的 k 个值

关于 TDengine

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


文章转载自:

http://nTryvCQz.qqnxh.cn
http://zfZjaHi1.qqnxh.cn
http://5D1VqsNT.qqnxh.cn
http://iJ7zZtxg.qqnxh.cn
http://FIvj42fV.qqnxh.cn
http://txqWvY9L.qqnxh.cn
http://CUeYt1XJ.qqnxh.cn
http://Tz08UiJg.qqnxh.cn
http://9VMl44iG.qqnxh.cn
http://xC4sxxNV.qqnxh.cn
http://nVJeUAc9.qqnxh.cn
http://utXZMECE.qqnxh.cn
http://m36gDU9z.qqnxh.cn
http://i7VEYoKH.qqnxh.cn
http://KNuLe1G6.qqnxh.cn
http://vVLQvQe7.qqnxh.cn
http://Kggv5xJr.qqnxh.cn
http://tqZj4sn3.qqnxh.cn
http://4IDV6cc8.qqnxh.cn
http://itWjZV1c.qqnxh.cn
http://r2ol25rR.qqnxh.cn
http://joHtnGRi.qqnxh.cn
http://PipyRm5n.qqnxh.cn
http://aQiqXfNk.qqnxh.cn
http://xpLtlYf6.qqnxh.cn
http://bz3Jv7Ut.qqnxh.cn
http://NeLSPZBB.qqnxh.cn
http://feyndsG0.qqnxh.cn
http://TCUPHRjC.qqnxh.cn
http://N3qy0gKe.qqnxh.cn
http://www.dtcms.com/a/379449.html

相关文章:

  • 在Linux系统中清理大文件的方法
  • oracle里的int类型
  • 【开关电源篇】整流及其滤波电路的工作原理和设计指南-超简单解读
  • 第五章 Logstash深入指南
  • 猫狗识别算法在智能喂食器上的应用
  • 数据库事务详解
  • Linux学习:基于环形队列的生产者消费者模型
  • size()和length()的区别
  • Windows系统下安装Dify
  • 企业云环境未授权访问漏洞 - 安全加固笔记
  • sv时钟块中default input output以及@(cb)用法总结
  • 广谱破局!芦康沙妥珠单抗覆罕见突变,一解“少数派”的用药困境
  • Guli Mall 25/08/12(高级上部分)
  • 彩笔运维勇闯机器学习--随机森林
  • Python 面向对象实战:私有属性与公有属性的最佳实践——用线段类举例
  • 使用deboor法计算三次B样条曲线在参数为u处的位置的方法介绍
  • 认识HertzBeat的第一天
  • AUTOSAR进阶图解==>AUTOSAR_EXP_ApplicationLevelErrorHandling
  • 线程同步:条件变量实战指南
  • OpenLayers数据源集成 -- 章节七:高德地图集成详解
  • AI助推下半年旺季,阿里国际站9月采购节超预期爆发
  • 电商平台拍立淘API接口调用全解析(基于淘宝/唯品会技术实践)
  • 9.11 Qt
  • 字节一面 面经(补充版)
  • 第二章 ELK安装部署与环境配置
  • I2C 总线
  • 设计模式——七大常见设计原则
  • 请创建一个视觉精美、交互流畅的进阶版贪吃蛇游戏
  • 利用美团龙猫添加xlsx的sheet.xml读取sharedStrings.xml中共享字符串输出到csv功能
  • 时序数据库:定义与基本特点