TDengine 数学函数 SIGN 用户手册 - 详解

news/2026/1/22 17:03:20/文章来源:https://www.cnblogs.com/yangykaifa/p/19518053

在这里插入图片描述

SIGN 函数

语法

SIGN(expr)

功能说明

返回数值表达式的符号,用于判断数值的正负性。

版本

v3.3.3.0

返回结果类型

与输入字段的原始数据类型一致。

适用数据类型

数值类型。

嵌套子查询支持

适用于内层查询和外层查询。

适用于

表和超级表。

使用说明

  • 如果 expr 为负数,返回 -1。
  • 如果 expr 为正数,返回 1。
  • 如果 expr 为 0,返回 0。
  • 如果 expr 为 NULL,返回 NULL。
  • 只能与普通列、TAG 列、选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

示例所用表与数据(可直接复制执行)

-- 建库与使用
CREATE DATABASE IF NOT EXISTS power;
USE power;
-- 智能电表表结构(带相位信息)
CREATE STABLE meters (
ts TIMESTAMP,
current FLOAT,
voltage INT,
phase FLOAT,
power DOUBLE
) TAGS (
groupid INT,
location VARCHAR(64)
);
-- 子表
CREATE TABLE d1001 USING meters TAGS (1, 'California.SanFrancisco');
CREATE TABLE d1002 USING meters TAGS (2, 'California.LosAngeles');
-- 写入数据(包含正负功率值,模拟发电和用电场景)
INSERT INTO d1001 VALUES
('2024-01-01 10:00:00.000', 10.3, 220, 30.0, 2266.0),
('2024-01-01 10:01:00.000', -5.2, 221, 45.0, -1149.2),
('2024-01-01 10:02:00.000', 8.5, 223, 60.0, 1895.5),
('2024-01-01 10:03:00.000', -3.8, 222, 120.0, -843.6),
('2024-01-01 10:04:00.000', 0.0, 220, 0.0, 0.0);
INSERT INTO d1002 VALUES
('2024-01-01 10:00:00.000', 9.0, 219, 0.0, 1971.0),
('2024-01-01 10:01:00.000', -7.5, 222, 90.0, -1665.0),
('2024-01-01 10:02:00.000', 7.2, 220, 180.0, 1584.0),
('2024-01-01 10:03:00.000', -4.2, 221, -30.0, -928.2),
('2024-01-01 10:04:00.000', 0.0, 220, 0.0, 0.0);

基础示例

示例 1: 常量符号判断

-- 正数返回 1
taos> SELECT SIGN(10);
sign(10)        |
========================
1 |
-- 负数返回 -1
taos> SELECT SIGN(-5);
sign(-5)        |
========================
-1 |
-- 零返回 0
taos> SELECT SIGN(0);
sign(0)        |
========================
0 |
-- 浮点数
taos> SELECT SIGN(-3.14);
sign(-3.14)      |
========================
-1 |

示例 2: NULL 值处理

taos> SELECT SIGN(NULL);
sign(null)       |
========================
NULL                  |

示例 3: 列数据符号判断

-- 判断电流方向(正:用电,负:发电)
SELECT ts,
current,
SIGN(current) AS current_direction
FROM d1001
ORDER BY ts;
           ts            |  current  | current_direction |
====================================================================2024-01-01 10:00:00.000 | 10.300000 |                 1 |2024-01-01 10:01:00.000 | -5.200000 |                -1 |2024-01-01 10:02:00.000 |  8.500000 |                 1 |2024-01-01 10:03:00.000 | -3.800000 |                -1 |2024-01-01 10:04:00.000 |  0.000000 |                 0 |

示例 4: 功率方向标识

-- 标识功率流向(1:消耗,-1:输出,0:无功率)
SELECT ts,
power,
SIGN(power) AS power_direction,
CASE
WHEN SIGN(power) = 1 THEN '用电'
WHEN SIGN(power) = -1 THEN '发电'
ELSE '停机'
END AS status
FROM d1002
ORDER BY ts;

智能电表场景示例

示例 5: 能流方向统计

目的:统计电表在用电和发电状态下的数据条数,评估双向电能计量情况。

SELECT location,
SUM(CASE WHEN SIGN(power) = 1 THEN 1 ELSE 0 END) AS consuming_count,
SUM(CASE WHEN SIGN(power) = -1 THEN 1 ELSE 0 END) AS generating_count,
SUM(CASE WHEN SIGN(power) = 0 THEN 1 ELSE 0 END) AS idle_count
FROM meters
WHERE ts >= '2024-01-01 10:00:00'
AND ts < '2024-01-01 10:05:00'
GROUP BY location;

应用价值

  • 评估分布式光伏发电的并网情况
  • 监测双向电能表的工作状态
  • 为电网调度提供数据支撑

示例 6: 电流方向切换检测(使用 DIFF 函数)

目的:检测电流方向变化事件,识别用电/发电状态切换。

-- 使用 DIFF 函数检测符号变化
SELECT ts,
current,
SIGN(current) AS current_direction,
DIFF(SIGN(current)) AS direction_change_flag,
CASE
WHEN DIFF(SIGN(current)) != 0 THEN '方向切换'
ELSE '方向不变'
END AS status
FROM d1001
WHERE current != 0
ORDER BY ts;

应用价值

  • 识别逆变器频繁切换异常
  • 监测光伏发电启停事件
  • 预警电网波动影响

示例 7: 能量流向分类统计

目的:按时间窗口统计不同能量流向的平均功率,评估用电和发电的平衡性。

SELECT _wstart AS time_window,
AVG(CASE WHEN SIGN(power) = 1 THEN power ELSE 0 END) AS avg_consume_power,
AVG(CASE WHEN SIGN(power) = -1 THEN ABS(power) ELSE 0 END) AS avg_generate_power
FROM meters
WHERE ts >= '2024-01-01 10:00:00'
AND ts < '2024-01-01 11:00:00'
INTERVAL(10m);

应用价值

  • 评估发电与用电的时序匹配度
  • 优化储能系统充放电策略
  • 指导微电网能量管理

示例 8: 异常零功率检测

目的:识别非正常的零功率状态(可能是传感器故障或设备离线)。

SELECT ts,
voltage,
current,
power,
SIGN(power) AS power_sign
FROM meters
WHERE SIGN(power) = 0
AND voltage > 0
AND ABS(current) > 0.1
ORDER BY ts;

应用价值

  • 检测功率计量异常
  • 识别互感器故障
  • 预防计量损失

示例 9: 逆功率保护监测

目的:监测逆功率(负功率)持续时间,触发逆功率保护告警。

SELECT ts,
power,
SIGN(power) AS power_direction
FROM meters
WHERE SIGN(power) = -1
AND ABS(power) > 1000
ORDER BY ts;

应用价值

  • 防止逆功率损坏设备
  • 满足电网反送电保护要求
  • 保障用电安全

示例 10: 双向电能累计分离

目的:分别累计正向电能(用电)和反向电能(发电),用于分时计费。

SELECT _wstart AS billing_period,
location,
SUM(CASE WHEN SIGN(power) = 1 THEN power * 0.001 ELSE 0 END) AS forward_kwh,
SUM(CASE WHEN SIGN(power) = -1 THEN ABS(power) * 0.001 ELSE 0 END) AS reverse_kwh
FROM meters
WHERE ts >= '2024-01-01 00:00:00'
AND ts < '2024-01-02 00:00:00'
PARTITION BY location
INTERVAL(1d);

应用价值

  • 实现双向电能精确计费
  • 支持光伏发电上网结算
  • 满足分布式能源计量需求

示例 11: 电流功率符号一致性校验

目的:检查电流和功率符号是否一致,识别计量异常或配置错误。

SELECT ts,
tbname,
current,
power,
SIGN(current) AS current_sign,
SIGN(power) AS power_sign,
CASE
WHEN SIGN(current) * SIGN(power) < 0 THEN '符号不一致'
WHEN SIGN(current) = 0 OR SIGN(power) = 0 THEN '存在零值'
ELSE '正常'
END AS consistency_check
FROM meters
WHERE ABS(current) > 0.1
AND ABS(power) > 10
AND ts >= '2024-01-01 10:00:00'
ORDER BY ts;

应用价值

  • 检测互感器接线错误
  • 识别计量配置问题
  • 保证计量准确性

示例 12: 能量流向趋势分析

目的:分析一段时间内能量流向的变化趋势,评估自发自用率。

SELECT _wstart AS hour,
COUNT(CASE WHEN SIGN(power) = 1 THEN 1 END) AS consume_samples,
COUNT(CASE WHEN SIGN(power) = -1 THEN 1 END) AS generate_samples,
COUNT(CASE WHEN SIGN(power) = -1 THEN 1 END) * 100.0 /
(COUNT(CASE WHEN SIGN(power) = 1 THEN 1 END) + COUNT(CASE WHEN SIGN(power) = -1 THEN 1 END)) AS generation_ratio
FROM meters
WHERE ts >= '2024-01-01 00:00:00'
AND ts < '2024-01-02 00:00:00'
INTERVAL(1h);

应用价值

  • 评估光伏发电利用率
  • 优化储能系统配置
  • 指导用能策略调整

生产场景应用与目的

场景 A: 双向电能计量与分时计费

目的:在分布式光伏、储能等双向电能场景下,需要区分用电(正向)和发电(反向)进行分别计量和计费。

示例

-- 生成双向电能日报表
SELECT location,
SUM(CASE WHEN SIGN(power) = 1 THEN power ELSE 0 END) * 0.001 AS consume_kwh,
SUM(CASE WHEN SIGN(power) = -1 THEN ABS(power) ELSE 0 END) * 0.001 AS generate_kwh,
SUM(CASE WHEN SIGN(power) = 1 THEN power ELSE 0 END) * 0.001 * 0.588 AS consume_fee,
SUM(CASE WHEN SIGN(power) = -1 THEN ABS(power) ELSE 0 END) * 0.001 * 0.45 AS generate_income
FROM meters
WHERE ts >= CURRENT_DATE
AND ts < CURRENT_DATE + 1d
GROUP BY location;

场景 B: 逆功率保护与安全监测

目的:监测设备是否出现逆功率情况,及时触发保护机制,防止设备损坏或电网事故。

示例

-- 检测逆功率超标事件
SELECT ts,
tbname AS meter_id,
power,
ABS(power) AS reverse_power
FROM meters
WHERE SIGN(power) = -1
AND ABS(power) > 2000
AND ts >= NOW - 1h
ORDER BY ts DESC;

场景 C: 光伏发电并网监测

目的:监测光伏逆变器的发电状态,统计发电时段和发电量,评估系统运行效率。

示例

-- 统计各电表的发电时长和发电量
SELECT location,
COUNT(CASE WHEN SIGN(power) = -1 THEN 1 END) * 5 / 60.0 AS generate_hours,
SUM(CASE WHEN SIGN(power) = -1 THEN ABS(power) ELSE 0 END) * 0.001 AS total_generate_kwh,
AVG(CASE WHEN SIGN(power) = -1 THEN ABS(power) ELSE NULL END) AS avg_generate_power
FROM meters
WHERE ts >= CURRENT_DATE
AND ts < CURRENT_DATE + 1d
GROUP BY location;

场景 D: 设备工况状态识别

目的:通过功率符号快速识别设备的运行状态(用电、发电、停机),简化状态机逻辑。

示例

-- 生成设备状态变化记录
SELECT ts,
tbname,
CASE
WHEN SIGN(power) = 1 THEN '用电中'
WHEN SIGN(power) = -1 THEN '发电中'
ELSE '停机'
END AS device_status,
power
FROM meters
WHERE ts >= NOW - 1h
ORDER BY tbname, ts;

场景 E: 计量异常检测

目的:检测电流和功率符号不一致、零功率异常等计量问题,及时发现互感器接线错误或传感器故障。

示例

-- 检测符号异常的数据
SELECT ts,
tbname,
current,
power,
SIGN(current) AS current_sign,
SIGN(power) AS power_sign
FROM meters
WHERE SIGN(current) * SIGN(power) < 0
AND ABS(current) > 0.1
AND ABS(power) > 10
AND ts >= NOW - 1d
ORDER BY ts DESC;

注意事项

  1. 数据类型一致性:SIGN 函数返回值类型与输入类型一致,整数输入返回整数,浮点输入返回浮点。

  2. 零值判断:对于浮点数,由于精度问题,建议使用 ABS(value) < threshold 判断是否接近零,而不是直接使用 SIGN(value) = 0

  3. NULL 传播:输入为 NULL 时返回 NULL,在条件过滤中需注意 NULL 值的处理。

  4. 性能考虑:SIGN 是简单的标量函数,性能开销极小,可以放心在大数据集中使用。

  5. 与聚合函数配合:SIGN 不能直接与聚合函数混用,但可以嵌套在 CASE 表达式中实现分组统计。

  6. 符号稳定性:对于接近零的微小值,浮点运算可能导致符号不稳定,建议设置合理的阈值进行过滤。


数学关系


相关函数

  • ABS:绝对值函数,x = SIGN(x) * ABS(x)
  • CASE:条件表达式,常与 SIGN 配合进行分支处理
  • DIFF:差分函数,可用于检测数值变化和符号切换
  • GREATEST/LEAST:极值比较,可用于符号相关的边界判断

函数意义与实际应用价值

数学意义

SIGN 函数是数学中的符号函数(signum function),将实数域映射到 {-1, 0, 1} 三值集合,是判断数值正负的标准方法。在数值计算、信号处理等领域有广泛应用。

实际应用价值

  1. 双向计量

  2. 状态识别

  3. 异常检测

  4. 数据分类

  5. 业务规则


本用户手册提供了 SIGN 函数的完整使用说明,特别针对电力系统中的双向电能计量、逆功率监测、光伏并网等实际需求,所有示例均符合 TDengine 语法规范,方便用户快速上手并应用于生产环境。

关于 TDengine

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。

它能安全高效地将大量设备每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,并提供 AI 智能体对数据进行预测与异常检测,提供实时的商业洞察。

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

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

相关文章

深入Python配置管理:从环境变量到动态配置中心的演进与实践

深入Python配置管理&#xff1a;从环境变量到动态配置中心的演进与实践 引言&#xff1a;配置管理的核心挑战 在现代软件开发中&#xff0c;配置管理远不止是简单的键值对存储。随着微服务架构的普及和云原生应用的兴起&#xff0c;配置管理已演变为一个复杂的系统工程问题。对…

真香警告!Mini Agent开源神器,小白30分钟变身AI开发大神,老板看了直呼内行!

Mini Agent 是一个极简但专业的演示项目&#xff0c;旨在展示使用 MiniMax M2 模型构建 Agent 的最佳实践。项目通过兼容 Anthropic 的 API&#xff0c;完全支持交错思维&#xff08;interleaved thinking&#xff09;&#xff0c;从而解锁 M2 模型在处理长而复杂的任务时强大的…

【solidworks日记】测量/草图定位/倒角

1.当多个定位孔之间有结构关系时&#xff0c;最好统一画在同一张草图上&#xff0c;并且智能尺寸使用“定位孔与定位孔之间的尺寸”&#xff0c;而不是单独分别和外部结构标识定位、互相孤立。这样方便改外部尺寸时&#xff0c;多个定位孔之间的结构关系不需要重新调整。比如&a…

2026年铜雕厂家权威推荐榜单:五大实力企业引领行业新标杆

在城市更新、文旅融合与公共艺术蓬勃发展的背景下,铜雕及金属雕塑产业正迎来新一轮高质量发展周期。作为兼具艺术性、文化性与工程性的细分领域,铜雕厂家不仅需具备精湛的工艺技术,更需拥有从创意设计到安装落地的一…

摄影爱好者必备:afilmory 个人摄影网站服务器搭搭建教程

如果你是摄影爱好者,不管是风光、人像、街拍还是纪实,大概率都会遇到这些情况: 📷 拍了很多照片,却长期躺在硬盘里 😵 社交平台压缩严重,画质失真 🧠 想系统性展示作品,却不知道怎么搭网站 💻 用现成建站平台,风格和控制力都有限 🔒 希望作品只属于自己,不被…

【代码已开源】告别RAG“语义陷阱“!MCTS驱动的知识检索框架让AI推理能力暴涨,小白也能秒变大神!

这篇论文《Reasoning in Action: MCTS-Driven Knowledge Retrieval for Large Language Models》揭示了当前大模型检索增强生成&#xff08;RAG&#xff09;技术中存在的致命缺陷&#xff1a;检索与推理的割裂。 现有的RAG系统大多依赖于表面层次的语义相似度&#xff08;embed…

香橙派通过VNC连接后处于管理员界面的切换为普通用户界面

首先当我们通过realVNC中连接上香橙派后&#xff0c;在终端里输入 whoami 后提示出来的是&#xff1a; 如果输出是 root&#xff1a;说明你的 VNC 服务是用管理员权限开启的。 如果输出是 HwHiAiUser&#xff1a;说明用户没问题&#xff0c;只是 Shell 没加载对…

香橙派到手如何通过网线实现与电脑连接

首先我们需要先配置好自己电脑" Internet协i议版本4&#xff08;TCP/Pv4&#xff09;"我们先要打开自己电脑的控制面板&#xff0c;然后选择网络和Internet&#xff0c;然后选择网络连接&#xff0c;你要先插上网线与香橙派连接上&#xff0c;然后右键以太网选择属性…

量化私募诚意高薪聘请:24/25/26届本硕博校招/社招/春招/秋招都可数学、物理、统计、计算机、软件等专业1、量化软件开发工程师(本科985以上)base北上杭深关键词:c+

量化私募诚意高薪聘请&#xff1a; 24/25/26届本硕博 校招/社招/春招/秋招都可 数学、物理、统计、计算机、软件等专业 1、量化软件开发工程师 (本科985以上)base北上杭深 关键词:c、python 负责&#xff1a;交易系统、投研系统、回测系统 年包40-80万、福利 有同行、…

2026英语雅思培训课程辅导机构怎么选?深度解析行业机构特点+家长择校指南

很多计划送孩子留学的家长,在选择雅思培训课程辅导机构时都会陷入核心困惑:不知道该优先考量师资实力还是课程体系,担心选到不适配孩子基础的机构浪费时间与金钱,又纠结机构能否衔接留学申请事宜,面对市面上五花八…

AI重构代码搜索:DeepAudit RAG系统让大模型读懂你的代码,告别grep时代!

前言 假设要找"处理用户输入的函数"。用 grep 只能搜关键词&#xff1a;user_input、request.body、form.data…但代码里可能用的是 sanitize_data()、validate_params()&#xff0c;这些函数名跟"用户输入"没有字面关系&#xff0c;grep 找不到。 RAG 的…

护栏状态安全监测终端 德克西尔技术领先

​ ​引言&#xff1a;护栏安全监测的数字化变革 ​ ​在基础设施安全领域&#xff0c;护栏状态安全监测终端已成为保障道路、桥梁等交通设施安全运行的关键技术装备。随着数字化转型的深入&#xff0c;杭州德克西智能科技有限公司&#xff08;德克西尔&#xff09;凭借其…

2026年雕塑厂家TOP5综合实力分析:五大细分领域专家深度解析!

节后开工第一天,大足高新区内火花四溅,工人们正为一组即将发往新疆的不锈钢雕塑做最后打磨,而这只是重庆富瑞精典景观雕塑艺术有限公司手上十余个订单之一。2025-2031年间,全球公共空间雕塑市场预计将保持稳定增长…

USACO历年白银组真题解析 | 2005年2月

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

2026英语雅思培训机构辅导机构怎么选?深度解析行业现状+优质机构口碑榜单与家长择校指南

对于计划让孩子备考雅思、冲刺海外院校的家长来说,挑选合适的英语雅思培训机构辅导机构始终充满困惑。不知道如何判断机构的课程是否适配孩子的雅思基础与留学目标,担心师资不专业、教学体系不完善,又怕选错机构浪费…

JDK21-虚拟线程(原理)

一、先给结论 虚拟线程不是不运行在 OS 线程上&#xff0c;而是&#xff1a; 只在“真正需要 CPU 时”才短暂占用 OS 线程。 在 IO 等待时&#xff0c;JVM 会把它“卸载”下来。 二、为什么传统线程一定占用 OS 线程&#xff1f; 1️⃣ Java 线程 OS 线程&#xff08;1:1&am…

2026年上海全屋定制衣柜公司TOP品牌厂家排行榜:全屋定制行业深度评测与排名、行业问题与选择指南

基于2026行业动态及市场研究报告,当前企业在需求全屋定制衣柜过程中,普遍面临信息杂乱、适配困难、质量参差等问题。本文旨在通过综合企业综合实力、技术能力、服务网络、市场口碑等维度进行严格筛选,为读者提供可靠…

2026英语雅思培训学校机构辅导机构推荐哪家好?家长择校避坑指南+深度解析

很多计划送孩子留学的家长,在选择雅思培训学校机构辅导机构时都会陷入核心困惑:不知道该优先考量师资实力还是课程体系,担心选到不适配孩子基础的机构浪费时间与金钱,又纠结机构能否衔接留学申请事宜,面对市面上五…

rust maturin 在调用 cargo 时,无法联网拉取 crates.io 索引,因为系统被代理到 127.0.0.1:10809,而本地并没有可用的代理服务

这个报错的核心是&#xff1a; 「maturin 在调用 cargo 时&#xff0c;无法联网拉取 crates.io 索引&#xff0c;因为系统被代理到 127.0.0.1:10809&#xff0c;而本地并没有可用的代理服务。」 也就是说&#xff0c;Cargo 的 HTTP 代理设置指向了一个不存在的本地代理端口&am…

AI Agent架构全解析:从感知到行动,小白也能上手的智能体开发实战,错过再等十年!

为深入贯彻落实工业和信息化部《工业互联网和人工智能融合赋能行动方案》&#xff0c;加快推动工业互联网与人工智能在更广范围、更深程度、更高水平上实现融合赋能&#xff0c;中国工业互联网研究院依托工业互联网大数据技术工信部重点实验室工业智算研究中心&#xff0c;联合…