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

TDengine 特殊选择函数 UNIQUE 用户手册

在这里插入图片描述

UNIQUE 函数用户手册

函数定义

UNIQUE(expr)

功能说明

UNIQUE() 函数返回指定列去重后的值,功能类似于 SQL 中的 DISTINCT 关键字。对于相同的数据值,UNIQUE 函数会返回时间戳最小的那一条记录。该函数会跳过 NULL 值。

版本要求

  • 最低版本: v3.0.0.0

返回值

  • 数据类型: 与输入参数相同的数据类型
  • 返回内容: 去重后的值集合及其对应的时间戳

参数说明

参数类型说明取值范围
expr表达式要去重的字段表达式所有数据类型

适用数据类型

UNIQUE 函数支持以下数据类型:

  • 所有数据类型: 数值类型、字符串类型、时间戳类型、布尔类型等

适用范围

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

基本用法示例

单列查询

-- 返回电流的所有不同值
SELECT UNIQUE(current) FROM meters;-- 返回电压的所有不同值
SELECT UNIQUE(voltage) FROM meters;-- 返回相位的所有不同值
SELECT UNIQUE(phase) FROM meters;

带时间戳查询

-- 返回电流不同值及其首次出现的时间戳
SELECT ts,UNIQUE(current) as unique_current_values
FROM meters;

带其他列查询

-- 返回包含标签信息的 UNIQUE 查询
SELECT location,UNIQUE(current) as unique_current,ts
FROM meters;

智能电表场景应用示例

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

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

场景1:全局数据去重分析

-- 查看所有电表记录过的不同电流值
SELECT UNIQUE(current) as current_levels FROM meters;-- 查看所有电表记录过的不同电压值
SELECT UNIQUE(voltage) as voltage_levels FROM meters;-- 查看所有电表记录过的不同相位值
SELECT UNIQUE(phase) as phase_levels FROM meters;

场景2:单个电表数据去重

-- 查看特定电表的不同电流使用模式
SELECT UNIQUE(current) as device_current_patterns,ts as first_occurrence
FROM meters 
WHERE tbname = 'd1001';-- 查看特定电表的不同电压模式
SELECT UNIQUE(voltage) as device_voltage_patterns,ts as first_occurrence
FROM meters 
WHERE tbname = 'd1001';

场景3:区域数据去重分析

-- 查看北京地区电表的不同电流值
SELECT location,UNIQUE(current) as regional_current_patterns,ts as first_occurrence
FROM meters 
WHERE location = 'Beijing';-- 查看上海地区电表的不同电压值
SELECT location,UNIQUE(voltage) as regional_voltage_patterns,ts as first_occurrence
FROM meters 
WHERE location = 'Shanghai';

场景4:时间段内的数据去重

-- 分析最近一周的用电模式变化
SELECT UNIQUE(current) as weekly_current_patterns,ts as pattern_first_seen
FROM meters 
WHERE ts >= NOW() - 7d;-- 分析工作日的用电模式
SELECT UNIQUE(current) as weekday_patterns,ts as pattern_start_time
FROM meters 
WHERE WEEKDAY(ts) BETWEEN 1 AND 5;

场景5:负载档位分析

-- 分析所有电表的负载档位(去重后的电流值)
SELECT UNIQUE(current) as load_levels,ts as level_first_seen
FROM meters 
ORDER BY load_levels;-- 分析高负载时段的电流模式
SELECT UNIQUE(current) as high_load_patterns,ts as high_load_first_time
FROM meters 
WHERE current > 20;

场景6:电力质量标准检测

-- 检测系统中出现过的电压标准
SELECT UNIQUE(voltage) as voltage_standards,ts as standard_first_detected
FROM meters 
ORDER BY voltage_standards;-- 检测异常电压值
SELECT UNIQUE(voltage) as abnormal_voltages,ts as anomaly_first_detected
FROM meters 
WHERE voltage < 200 OR voltage > 250;

场景7:设备特定分析

-- 分析特定设备组的运行特征
SELECT UNIQUE(current) as group_current_patterns,ts as pattern_first_occurrence
FROM meters 
WHERE groupid = 1;-- 分析特定设备的电气特征
SELECT UNIQUE(current) as device_current_signature,UNIQUE(voltage) as device_voltage_signature,ts as signature_timestamp
FROM meters 
WHERE tbname = 'd1001';

场景8:数据质量检查

-- 检查最近记录中的数据完整性
SELECT UNIQUE(current) as recent_current_values,ts as value_first_seen
FROM meters 
WHERE ts >= NOW() - 1h;-- 检查数据的离散程度
SELECT COUNT(UNIQUE(current)) as current_diversity,MAX(ts) as latest_record
FROM meters;

场景9:异常检测数据准备

-- 获取异常电流值用于分析
SELECT UNIQUE(current) as abnormal_current,ts as anomaly_first_time
FROM meters 
WHERE current > 30 OR current < 0;-- 获取系统中的所有相位值
SELECT UNIQUE(phase) as phase_variations,ts as variation_first_detected
FROM meters;

场景10:基准值建立

-- 建立电流基准值库
SELECT UNIQUE(current) as current_baselines,ts as baseline_established
FROM meters 
WHERE ts >= NOW() - 30d;-- 建立电压基准值库
SELECT UNIQUE(voltage) as voltage_baselines,ts as baseline_timestamp
FROM meters 
WHERE voltage BETWEEN 200 AND 240;

场景11:设备运行模式识别

-- 识别设备的不同运行模式(基于电流值)
SELECT UNIQUE(current) as operating_modes,ts as mode_first_detected
FROM meters 
WHERE tbname IN ('d1001', 'd1002', 'd1003');-- 识别低功耗模式
SELECT UNIQUE(current) as low_power_modes,ts as mode_detected_time
FROM meters 
WHERE current < 5;

场景12:历史数据模式分析

-- 分析历史数据中的电流模式
SELECT UNIQUE(current) as historical_patterns,ts as pattern_origin_time
FROM meters 
WHERE ts BETWEEN '2024-01-01 00:00:00' AND '2024-01-31 23:59:59';-- 分析夜间用电模式
SELECT UNIQUE(current) as night_patterns,ts as night_pattern_time
FROM meters 
WHERE HOUR(ts) BETWEEN 22 AND 6;

与传统 DISTINCT 的对比

-- UNIQUE 函数方式(推荐,返回时间戳信息)
SELECT UNIQUE(current) as unique_current,ts
FROM meters 
WHERE tbname = 'd1001';-- 传统 DISTINCT 方式(只返回去重值)
SELECT DISTINCT current 
FROM meters 
WHERE tbname = 'd1001';

注意事项

  1. NULL 值处理: UNIQUE 函数会跳过 NULL 值,不会包含在返回结果中
  2. 时间戳选择: 对于相同的值,返回时间戳最小的那一条记录
  3. 多行返回: UNIQUE 函数会返回多行结果
  4. 必须包含列: 参数必须包含列引用,不能是纯常量表达式
  5. 隐式时间戳: 函数会隐式返回对应的时间戳信息
  6. 不支持分组: UNIQUE 函数不能在 GROUP BY 查询中使用
  7. 不支持窗口: UNIQUE 函数不能在窗口查询中使用
  8. 性能考虑: 在大表上使用时建议配合适当的 WHERE 条件过滤

相关函数

  • MODE(): 返回出现频率最高的值
  • SAMPLE(): 返回随机采样的 k 个值
  • TOP(): 返回最大的 k 个值
  • BOTTOM(): 返回最小的 k 个值
  • FIRST(): 返回最先的非 NULL 值
  • LAST(): 返回最后的非 NULL 值

关于 TDengine

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


文章转载自:

http://HPloeVYr.cgtrz.cn
http://gMBuHW9P.cgtrz.cn
http://iGutKNwA.cgtrz.cn
http://MY8ICzKu.cgtrz.cn
http://vsWubPyT.cgtrz.cn
http://rgGIoG8s.cgtrz.cn
http://4kW650x6.cgtrz.cn
http://wrdD8C8p.cgtrz.cn
http://jhHjfo40.cgtrz.cn
http://YGB9IXk2.cgtrz.cn
http://B5cMAB2H.cgtrz.cn
http://p9Cp8noM.cgtrz.cn
http://877bewxW.cgtrz.cn
http://ZYmDTglX.cgtrz.cn
http://y70gC0T2.cgtrz.cn
http://0WYDAuCc.cgtrz.cn
http://NBrF51ji.cgtrz.cn
http://HC5rplKE.cgtrz.cn
http://WT0ZaCQ8.cgtrz.cn
http://nCGfGlcl.cgtrz.cn
http://asRupgrF.cgtrz.cn
http://9Tyn9xCu.cgtrz.cn
http://7AzJGnKH.cgtrz.cn
http://anhYSP9m.cgtrz.cn
http://pN1mFDaV.cgtrz.cn
http://PlWOM2Ys.cgtrz.cn
http://xseevW1X.cgtrz.cn
http://drKWh8zx.cgtrz.cn
http://h2KUXib2.cgtrz.cn
http://npGCiw2z.cgtrz.cn
http://www.dtcms.com/a/383875.html

相关文章:

  • 状态机SMACH相关教程介绍与应用案例分析——机器人操作进阶系列 · 状态机篇
  • Transformer简介
  • 维星AI-AI驱动的精准获客:重塑数字营销新范式
  • 视觉SLAM第11讲:回环检测
  • Linux相关概念和易错知识点(45)(网络层、网段划分)
  • 因果推断 | 从因果树到因果森林:理论解析与代码实践
  • Spring MVC 九大组件源码深度剖析(七):ViewResolver - 视图解析的智慧
  • 【左程云算法09】栈的入门题目-最小栈
  • java设计模式三、创建者模式
  • 出现次数最多的字符 字符串处理
  • 根据IP获取用户信息和天气信息的方法
  • Paxos协议
  • 上网行为二层部署案例
  • XLua教程之热补丁技术
  • Linux 基本命令超详细解释第一期 | cd | pwd | ls | mkdir | rmdir
  • 如何查找 Linux 中 `dm-X` 设备对应的真实磁盘或虚拟机?
  • 线性稳压器LDO原理
  • 大模型浪潮来袭
  • 第6课:安全性与权限控制
  • 如何用 Rust 重写 SQLite 数据库(二):是否有市场空间?
  • pgsql 特有字段记录
  • Leetcode第165场双周赛题目详解+复盘
  • rt1180 rt1180处理器ethercat具体技术介绍
  • Sugov 关于频率变化
  • 多语言编码Agent解决方案(6)-部署和使用指南
  • React 原理篇 - React 新架构深度解析
  • Flowgorith,一款图形化编程入门工具
  • LeetCode 674.最长连续递增序列
  • 贪心算法在AGV无人车路径规划中的应用
  • Week 16: 深度学习补遗:集成学习进阶与量子计算概念入门