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

在这里插入图片描述

BOTTOM() 函数用户手册

函数定义

BOTTOM(expr, k)

功能说明

BOTTOM() 函数统计表/超级表中某列的值最小 k 个非 NULL 值。如果多条数据取值一样,全部取用又会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。

返回值

  • 数据类型: 同应用的字段
  • 返回内容: 最小的 k 个值及其对应的时间戳

参数说明

参数类型说明取值范围
expr数值类型要统计的字段表达式任意数值类型字段
kINTEGER返回最小值的数量1 ≤ k ≤ 100

适用数据类型

  • 数值类型: TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL

适用范围

  • 表类型: 表和超级表
  • 查询支持: 不支持嵌套子查询

使用说明

  1. k 值限制: k 值取值范围为 1≤k≤100
  2. 时间戳返回: 系统同时返回该记录关联的时间戳列
  3. 相同值处理: 当存在相同最小值且超出 k 条限制时,系统随机选取
  4. NULL 值处理: 忽略 NULL 值,只统计非 NULL 值
  5. 限制条件: BOTTOM 函数不支持 FILL 子句

基本用法示例

简单查询

-- 获取电流最小的3个值
SELECT BOTTOM(current, 3) FROM meters;-- 获取电压最小的5个值
SELECT BOTTOM(voltage, 5) FROM meters;-- 获取相位最小的1个值
SELECT BOTTOM(phase, 1) FROM meters;

NULL 值处理

-- BOTTOM 函数自动忽略 NULL 值
SELECT BOTTOM(current, 10) FROM meters;
-- 只返回非 NULL 的最小值

智能电表场景应用示例

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

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

场景1:故障诊断 - 找出电流异常低的记录

-- 查找电流最低的10个异常记录
SELECT BOTTOM(current, 10) FROM meters 
WHERE ts >= '2024-01-01' AND ts < '2024-02-01';-- 输出结果包含时间戳和电流值,便于定位异常时间点

场景2:按区域查找最低电压

-- 查找每个区域电压最低的5个记录
SELECT location, BOTTOM(voltage, 5) FROM meters 
WHERE ts >= '2024-01-01' AND ts < '2024-02-01'
GROUP BY location;

场景3:设备性能分析 - 最低相位记录

-- 查找相位最低的8个记录,用于分析设备性能
SELECT BOTTOM(phase, 8) FROM meters 
WHERE ts >= '2024-01-01' AND ts < '2024-02-01'AND location = 'California.SanFrancisco';

场景4:电网监控 - 多指标最低值分析

-- 分别查找各项指标的最低值
-- 电流最低的3个值
SELECT 'current' as metric, ts, current as value 
FROM (SELECT BOTTOM(current, 3) FROM meters WHERE ts >= TODAY() - 7d);-- 电压最低的3个值  
SELECT 'voltage' as metric, ts, voltage as value
FROM (SELECT BOTTOM(voltage, 3) FROM meters WHERE ts >= TODAY() - 7d);-- 相位最低的3个值
SELECT 'phase' as metric, ts, phase as value
FROM (SELECT BOTTOM(phase, 3) FROM meters WHERE ts >= TODAY() - 7d);

场景5:按时间段查找异常低值

-- 查找工作时间内电流最低的记录(可能表示设备故障)
SELECT BOTTOM(current, 15) FROM meters 
WHERE ts >= '2024-01-01 08:00:00' AND ts <= '2024-01-01 18:00:00'AND WEEKDAY(ts) NOT IN (5, 6);  -- 排除周末

场景6:设备维护 - 识别性能下降的电表

-- 查找电压最低的20个记录,可能需要维护
SELECT location, BOTTOM(voltage, 20) FROM meters 
WHERE ts >= TODAY() - 30d  -- 最近30天
GROUP BY location;

场景7:电网稳定性分析 - 相位异常检测

-- 查找相位值异常低的记录(接近0或负值)
SELECT BOTTOM(phase, 25) FROM meters 
WHERE ts >= '2024-01-01' AND ts < '2024-02-01'AND phase < 0.1;  -- 相位值异常低

场景8:按设备组查找最低值

-- 按设备组查找电流最低的记录
SELECT groupid, BOTTOM(current, 12) FROM meters 
WHERE ts >= TODAY() - 14d  -- 最近两周
GROUP BY groupid;

场景9:负载分析 - 最低负载时段识别

-- 查找电流最低的时段,用于负载调度参考
SELECT BOTTOM(current, 30) FROM meters 
WHERE ts >= '2024-01-01' AND ts < '2024-01-08'AND WEEKDAY(ts) IN (5, 6);  -- 只看周末的低负载

场景10:质量控制 - 电压质量监控

-- 监控电压质量,找出可能的电压跌落
SELECT location, BOTTOM(voltage, 10) FROM meters 
WHERE ts >= TODAY() - 7dAND voltage < 200  -- 电压异常低的阈值
GROUP BY location;

场景11:结合其他函数进行综合分析

-- 对比最高值和最低值的差异
-- 注意:这需要分别执行两个查询
-- 查询最低电流值
SELECT 'BOTTOM' as type, BOTTOM(current, 5) FROM meters 
WHERE ts >= TODAY() - 1d;-- 查询最高电流值  
SELECT 'TOP' as type, TOP(current, 5) FROM meters 
WHERE ts >= TODAY() - 1d;

场景12:告警系统 - 异常低值监控

-- 设置告警条件,监控异常低的电流值
SELECT location,'LOW_CURRENT_ALERT' as alert_type,BOTTOM(current, 3) 
FROM meters 
WHERE ts >= NOW() - INTERVAL 1 HOURAND current < 5.0  -- 电流异常低的阈值
GROUP BY location;

与其他函数的对比

BOTTOM vs TOP

-- 电流最低的5个值
SELECT 'BOTTOM' as type, BOTTOM(current, 5) FROM meters 
WHERE ts >= TODAY();-- 电流最高的5个值
SELECT 'TOP' as type, TOP(current, 5) FROM meters 
WHERE ts >= TODAY();

BOTTOM vs MIN

-- MIN 只返回最小值,不返回时间戳
SELECT MIN(current) FROM meters WHERE ts >= TODAY();-- BOTTOM 返回最小的k个值及其时间戳
SELECT BOTTOM(current, 1) FROM meters WHERE ts >= TODAY();

性能优化建议

  1. 时间范围限制: 使用适当的时间范围限制来提高查询性能
  2. 索引利用: 确保时间戳字段有适当的索引
  3. k值选择: 根据实际需求选择合适的k值,避免不必要的大值
  4. WHERE条件: 合理使用WHERE条件过滤数据

注意事项

  1. k值限制: k 值必须在 1-100 范围内
  2. 相同值处理: 当存在相同最小值时,系统会随机选取
  3. NULL值忽略: 函数自动忽略 NULL 值
  4. FILL限制: 不支持 FILL 子句
  5. 时间戳返回: 结果总是包含对应的时间戳
  6. 数据类型: 只适用于数值类型字段

关于 TDengine

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96072.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西门子 S7-200 SMART PLC 实现星三角降压启动控制:原理、案例与完整程序

在工业控制场景中&#xff0c;中型异步电机直接启动时会产生远超额定电流的冲击电流&#xff08;通常为额定电流的 5-7 倍&#xff09;&#xff0c;不仅会影响电网稳定性&#xff0c;还可能对机械设备造成损伤。星三角&#xff08;Y-Δ&#xff09;降压启动是解决这一问题的经典…

【Android】View 的基础知识

【Android】View 的基础知识 1. 什么是 View&#xff1f; View 是 Android 中所有UI组件的基础类。它表示屏幕上的一个矩形区域&#xff0c;负责绘制内容和处理用户交互事件。所有的 UI 组件&#xff08;如按钮、文本框等&#xff09;都是 View 的子类&#xff0c;而 ViewGroup…

西门子 S7-200 SMART PLC 实现电机点动与连续运行综合控制

在工业生产中&#xff0c;电机控制并非单一模式&#xff1a;调试设备时需要 “按动即转、松开即停” 的点动功能&#xff0c;正常生产时则需要 “一键启动、持续运行” 的连续控制。本文以西门子 S7-200 SMART PLC 为载体&#xff0c;详细讲解电机点动控制原理&#xff0c;并设…

如何解决pip安装报错ModuleNotFoundError: No module named ‘sphinx-rtd-theme’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘sphinx-rtd-theme’问题 摘要 在使用 PyCharm 开发 Python 项目时&#xff0c;pip install 报错是常见痛点。特别是在构建文档或引入第三方库时&#xff0c;开…

HakcMyVM-Literal

目录信息搜集漏洞利用权限提升信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.21.0/24 Nmap scan report for 192.168.21.5端口扫描 ┌──(kali㉿kali)-[~] └─$ nmap -sS -sV -O -p- 192.168.21.5 Starting Nmap 7.95 ( https://nmap.org ) a…

0904 类的继承

Part 1.梳理思维导图一.继承中的特殊成员函数1.构造函数父类的构造函数会被继承到子类中&#xff0c;在构造的顺序中&#xff0c;是先构造父类&#xff0c;再构造子类#include <iostream>using namespace std;class Father { public:string name; protected:int *age; pr…

PDF教程|如何把想要的网页保存下来?

前段时间有个小伙伴咨询了小白&#xff1a;领导想要某个网页的整个页面&#xff0c;有没有比较好的方法把它保存下来&#xff1f; 在他找到小白之前&#xff0c;这种事情他已经接到好几次了&#xff0c;每次都是怎么解决的呢&#xff1f;其实很简单&#xff0c;就是打开Word&a…

【bash】命令查看当前目录下文件个数

要用 ls 查看当前目录下的文件个数&#xff0c;可以结合 wc -l 来统计行数&#xff1a; ls -1 | wc -l说明&#xff1a; ls -1&#xff1a;以一行一个文件的方式列出。wc -l&#xff1a;统计行数&#xff0c;也就是文件/目录的数量。 ⚠️ 需要注意&#xff1a; 这个方法会把文…

「日拱一码」081 机器学习——梯度增强特征选择GBFS

目录 什么是梯度增强特征选择&#xff08;GBFS&#xff09; 为什么 GBM 适合做特征选择 GBFS 的一般步骤 代码示例 什么是梯度增强特征选择&#xff08;GBFS&#xff09; GBFS 并非一个像 Lasso 或随机森林那样有严格标准定义的独立算法&#xff0c;而是一种基于梯度提升机…

解构汇编, 万物起源

汇编的诞生汇编全景图核心主干: CPU架构主要分支: 语法和工具共同的地貌: 核心概念延伸: 跨平台 & 跨架构跨平台跨架构总结以 GAS vs. NASM 为例NASM 不支持跨架构 ≠ 无法在ARM架构上的系统安装汇编的诞生 机器语言的困境 早期的程序员直接使用机器语言进行编程机器语言由…

广州旅游网站系统 - 纯静态旅游展示平台

&#x1f31f; 广州旅游网站系统 - 纯静态旅游展示平台观世界才有世界观 - 一个集景区展示、旅游攻略、文化传播于一体的精美旅游网站&#x1f4cb; 项目概述 这是一个专注于广州旅游文化的纯静态网站系统&#xff0c;采用现代化的前端技术栈&#xff0c;为游客提供全方位的广州…

Qt UDP通信学习

Qt UDP通信学习 一、项目概述 本项目基于Qt框架实现了UDP通信功能&#xff0c;支持单播与广播消息收发&#xff0c;展示了UDP套接字的基本用法&#xff0c;适合初学者学习Qt网络模块的实际应用。 二、项目结构 55.pro&#xff1a;Qt工程文件&#xff0c;配置模块与源码文件main…

古德哈特定律(Goodhart‘s Law)

古德哈特定律&#xff08;Goodhart’s Law&#xff09;表述为“当一个指标变成了目标&#xff0c;它将不再是个好指标”。 该定律由英国经济学家查尔斯古德哈特&#xff08;Charles Goodhart&#xff09;在1975年提出&#xff0c;最初用于批判撒切尔夫人政府的货币主义政策&…

在 ASP.NET Core 8 Web API 中实现基于角色的授权 安全且可扩展 API 的最佳实践

掌握基于角色的授权&#xff1a;使用专家策略保护您的 ASP.NET Core 8 Web API。在 ASP.NET Core 8 Web API 中实现基于角色的授权&#xff1a;安全且可扩展 API 的最佳实践介绍授权是任何 Web 应用程序的关键组件。在开发 API 时&#xff0c;使用基于角色的授权保护端点可确保…

AutoHotkey识别图片

一、下载ImagePut插件 下载地址&#xff1a;GitHub - iseahound/ImagePut: A core library for images in AutoHotkey. Supports AutoHotkey v1 and v2. 二、将插件和要搜索的图片导入项目 #Include ./plugin/ImagePut.ahk ; 截取当前屏幕 pic : ImagePutBuffer(0) point : p…

CamX-Camera常用编译命令和adb指南

g_camxsettings vendor/qcom/proprietary/camx/src/settings/g_camxsettings.xml 控制相机debug的信息都在该文件里面 0、相关代码 framwork层 frameworks/av/camera/ frameworks/av/services/camera frameworks/av/services/camera frameworks/hardware/interfaces/camerase…

LabVIEW 实现颜色平滑渐变控制

LabVIEW 中实现 LED 颜色从蓝到红的平滑渐变显示在 LabVIEW 开发中&#xff0c;若需让 LED&#xff08;或类 LED 显示控件&#xff09;实现从蓝色到红色的平滑色彩渐变&#xff08;模拟温度等参数从低到高的视觉反馈&#xff09;&#xff0c;可通过自定义颜色查找表 数值缩放映…

阴阳学:从入门到精通

第一篇&#xff1a;入门篇——阴阳基础理论1.1 阴阳的起源与哲学意义阴阳概念的历史渊源《易经》中的阴阳思想阴阳与宇宙、自然、人生的关系阴阳对思想、行为、社会的影响1.2 阴阳的基本属性与符号阴阳的特征、象征与对立统一阴阳在自然界的表现&#xff08;昼夜、冷热、动静等…

Java工业通信实战(三):Modbus RTU串口通信实现

想象一下&#xff0c;你要和一台工业设备"对话"&#xff0c;比如询问温度传感器"现在多少度&#xff1f;“或者告诉电机"转快一点”。 Modbus RTU就是这种"对话"的标准语言&#xff0c;就像人与人之间说普通话一样。 它采用主从结构&#xff0c;…

CentOS安装或升级protoc

卸载旧版本 sudo yum remove protobuf protobuf-c protobuf-compiler -y sudo rm -f /usr/bin/protoc sudo rm -rf /usr/include/google/protobuf 下载 wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.0/protoc-3.15.0-linux-x86_64.zip unz…