TDengine 数字函数 RADIANS 用户手册

RADIANS 函数

语法

sql 复制代码
RADIANS(expr)

功能说明

将角度值转换为弧度值。

版本

v3.3.3.0

返回结果类型

DOUBLE

适用数据类型

数值类型。

嵌套子查询支持

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

适用于

表和超级表。

使用说明

  • 如果 expr 为 NULL,则返回 NULL。
  • 转换公式:radian = degree × π / 180。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

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

sql 复制代码
-- 建库与使用
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');

-- 写入数据(phase 列存储相位角度,单位:度)
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', 12.6, 221, 45.0, 2784.6),
  ('2024-01-01 10:02:00.000',  8.5, 223, 60.0, 1895.5),
  ('2024-01-01 10:03:00.000', 11.2, 222, 120.0, 2486.4);

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', 14.0, 222, 90.0, 3108.0),
  ('2024-01-01 10:02:00.000',  7.2, 220, 180.0, 1584.0),
  ('2024-01-01 10:03:00.000', 10.5, 221, -30.0, 2320.5);

基础示例

示例 1: 常量角度转换

sql 复制代码
-- 180度转弧度 (π)
taos> SELECT RADIANS(180);
     radians(180)      |
========================
  3.141592653589793    |

-- 90度转弧度 (π/2)
taos> SELECT RADIANS(90);
     radians(90)       |
========================
  1.570796326794897    |

-- 0度
taos> SELECT RADIANS(0);
      radians(0)       |
========================
  0.000000000000000    |

-- 负角度
taos> SELECT RADIANS(-90);
    radians(-90)       |
========================
 -1.570796326794897    |

-- 浮点角度
taos> SELECT RADIANS(45.5);
    radians(45.5)      |
========================
  0.794153278443277    |

示例 2: NULL 值处理

sql 复制代码
taos> SELECT RADIANS(NULL);
 radians(null) |
================
 NULL          |

示例 3: 数学关系验证

sql 复制代码
-- 验证 RADIANS(180) = π
taos> SELECT RADIANS(180), PI();
     radians(180)      |         pi()         |
==================================================
  3.141592653589793    | 3.141592653589793    |

-- 验证 RADIANS 与 DEGREES 互为反函数
taos> SELECT DEGREES(RADIANS(90));
 degrees(radians(90)) |
=======================
       90.000000000000 |

taos> SELECT RADIANS(DEGREES(1.5708));
 radians(degrees(1.5708)) |
===========================
        1.570800000000000 |

示例 4: 与三角函数配合使用

sql 复制代码
-- sin(30°) = 0.5
taos> SELECT SIN(RADIANS(30));
  sin(radians(30))     |
========================
  0.500000000000000    |

-- cos(60°) = 0.5
taos> SELECT COS(RADIANS(60));
  cos(radians(60))     |
========================
  0.500000000000000    |

-- tan(45°) = 1
taos> SELECT TAN(RADIANS(45));
  tan(radians(45))     |
========================
  1.000000000000000    |

智能电表场景示例

示例 5: 相位角度转弧度

sql 复制代码
-- 将电表的相位角度转换为弧度
taos> SELECT ts, 
             phase AS phase_deg,
             RADIANS(phase) AS phase_rad
      FROM d1001
      ORDER BY ts;
           ts            | phase_deg |     phase_rad        |
==================================================================
 2024-01-01 10:00:00.000 |  30.000000| 0.523598775598299    |
 2024-01-01 10:01:00.000 |  45.000000| 0.785398163397448    |
 2024-01-01 10:02:00.000 |  60.000000| 1.047197551196598    |
 2024-01-01 10:03:00.000 | 120.000000| 2.094395102393195    |

示例 6: 计算功率因数

sql 复制代码
-- 根据相位角计算功率因数 (PF = cos(θ))
-- 目的:评估电能利用效率,功率因数越接近1表示电能利用率越高
taos> SELECT ts,
             phase,
             RADIANS(phase) AS phase_rad,
             COS(RADIANS(phase)) AS power_factor,
             CASE 
                 WHEN COS(RADIANS(phase)) >= 0.95 THEN '优秀'
                 WHEN COS(RADIANS(phase)) >= 0.85 THEN '良好'
                 WHEN COS(RADIANS(phase)) >= 0.70 THEN '合格'
                 ELSE '需改进'
             END AS pf_level
      FROM d1001
      ORDER BY ts;

应用价值

  • 监测电网功率因数,及时发现无功功率过大的问题
  • 指导无功补偿设备的投切,降低线损
  • 避免因功率因数过低被供电部门罚款

示例 7: 有功功率和无功功率分解

sql 复制代码
-- 根据相位角分解视在功率为有功功率和无功功率
-- 目的:准确计算实际消耗的电能和需要补偿的无功功率
taos> SELECT ts,
             current,
             voltage,
             phase,
             current * voltage AS apparent_power,
             current * voltage * COS(RADIANS(phase)) AS active_power,
             current * voltage * SIN(RADIANS(phase)) AS reactive_power
      FROM d1001
      ORDER BY ts;

应用价值

  • 准确计量实际消耗的电能(有功功率)
  • 评估需要补偿的无功功率大小
  • 优化电容器组投切策略

示例 8: 三相不平衡度分析

sql 复制代码
-- 假设三个电表分别代表三相,分析三相电压相位差
-- 目的:检测三相系统是否平衡,理论上三相相位差应为120度
taos> SELECT location,
             AVG(phase) AS avg_phase,
             RADIANS(AVG(phase)) AS avg_phase_rad,
             STDDEV(phase) AS phase_stddev
      FROM meters
      WHERE ts >= '2024-01-01 10:00:00'
        AND ts < '2024-01-01 10:04:00'
      GROUP BY location;

应用价值

  • 及时发现三相不平衡问题
  • 预防设备过热和效率下降
  • 避免中性线电流过大

示例 9: 谐波分析准备

sql 复制代码
-- 将相位角转换为弧度,为傅里叶分析准备数据
-- 目的:识别电网中的谐波成分,评估电能质量
taos> SELECT ts,
             current,
             voltage,
             RADIANS(phase) AS phase_rad,
             current * COS(RADIANS(phase)) AS i_real,
             current * SIN(RADIANS(phase)) AS i_imag
      FROM d1002
      WHERE ts >= '2024-01-01 10:00:00'
      ORDER BY ts;

应用价值

  • 为谐波分析提供基础数据
  • 识别电网污染源
  • 指导谐波治理方案设计

生产场景应用与目的

场景 A: 电力系统功率因数优化

目的:通过计算功率因数(cos φ),评估电能利用效率,指导无功补偿设备的投切策略,降低电费支出和线路损耗。

示例

sql 复制代码
-- 统计各地区的平均功率因数
SELECT location,
       AVG(COS(RADIANS(phase))) AS avg_power_factor,
       COUNT(*) AS sample_count,
       CASE
           WHEN AVG(COS(RADIANS(phase))) < 0.85 THEN '需要无功补偿'
           ELSE '功率因数良好'
       END AS recommendation
FROM meters
WHERE ts >= NOW - 1d
GROUP BY location;

场景 B: 三相电平衡监测

目的:监测三相电压、电流的相位关系,及时发现三相不平衡问题,预防设备损坏和能效下降。

示例

sql 复制代码
-- 检查三相相位差是否符合标准(理论值120度 = 2.094弧度)
SELECT _wstart AS time_window,
       STDDEV(RADIANS(phase)) AS phase_variation,
       CASE
           WHEN STDDEV(RADIANS(phase)) > 0.3 THEN '三相不平衡'
           ELSE '三相平衡正常'
       END AS balance_status
FROM meters
WHERE groupid IN (1, 2, 3)  -- 假设1、2、3代表三相
INTERVAL(10m)
ORDER BY time_window;

场景 C: 谐波污染评估

目的:将相位角数据转换为复数形式(实部和虚部),为傅里叶变换和谐波分析提供基础数据,识别电网中的谐波污染源。

示例

sql 复制代码
-- 提取电流的实部和虚部分量用于谐波分析
SELECT ts,
       current * COS(RADIANS(phase)) AS current_real,
       current * SIN(RADIANS(phase)) AS current_imag,
       SQRT(POW(current * COS(RADIANS(phase)), 2) + 
            POW(current * SIN(RADIANS(phase)), 2)) AS current_magnitude
FROM d1001
WHERE ts >= NOW - 1h
ORDER BY ts;

场景 D: 同步相量测量(PMU应用)

目的:在智能电网中,同步相量测量单元(PMU)需要精确的相位信息来监测电网状态,RADIANS函数将角度转换为弧度供后续计算使用。

示例

sql 复制代码
-- 计算电压相量(用于PMU数据处理)
SELECT ts,
       voltage * COS(RADIANS(phase)) AS voltage_real,
       voltage * SIN(RADIANS(phase)) AS voltage_imag,
       ATAN(voltage * SIN(RADIANS(phase)) / 
            voltage * COS(RADIANS(phase))) AS phasor_angle
FROM meters
WHERE ts >= NOW - 5m
ORDER BY ts;

注意事项

  1. 数学常量关系:360° = 2π 弧度,180° = π 弧度,90° = π/2 弧度
  2. 精度问题:浮点运算存在精度限制,大角度值转换时需注意累积误差
  3. 角度范围:输入角度没有范围限制,可以是任意正负值,也支持大于360度的角度
  4. 三角函数配合:TDengine 的三角函数(SIN/COS/TAN)接受弧度作为输入
  5. 性能考虑:RADIANS 是逐行计算的标量函数,大数据集建议配合过滤条件
  6. 相位范围:电力系统中相位角通常在 -180° 到 +180° 或 0° 到 360° 范围内

数学关系

  • 转换公式radian = degree × π / 180
  • 反函数DEGREES(RADIANS(x)) = x
  • 周期性RADIANS(x) = RADIANS(x + 360n),其中 n 为整数
  • 常用值
    • RADIANS(0) = 0
    • RADIANS(30) ≈ 0.5236
    • RADIANS(45) ≈ 0.7854
    • RADIANS(60) ≈ 1.0472
    • RADIANS(90) ≈ 1.5708(π/2)
    • RADIANS(120) ≈ 2.0944(2π/3)
    • RADIANS(180) ≈ 3.1416(π)

函数意义与实际应用价值

数学意义

RADIANS 函数实现角度到弧度的标准数学转换。弧度是国际单位制中角度的标准单位,在数学和物理计算中具有天然优势,因为许多公式在弧度制下形式更简洁。

实际应用价值

  1. 电力系统分析

    • 功率因数计算和优化
    • 三相系统平衡度分析
    • 有功/无功功率分解
    • 谐波分析和电能质量评估
  2. 相位关系计算

    • 准确计算电压、电流的相位差
    • 分析设备运行状态
    • 检测异常相位漂移
  3. 能效优化

    • 通过功率因数评估指导节能措施
    • 优化无功补偿设备投切
    • 降低线路损耗
  4. 故障诊断

    • 相位突变检测
    • 三相不平衡预警
    • 设备异常识别
  5. 智能电网应用

    • 同步相量测量(PMU)
    • 广域监测系统(WAMS)
    • 电网状态估计

相关函数

  • DEGREES:弧度转角度,RADIANS 的反函数
  • PI:返回圆周率 π,常与 RADIANS 配合使用
  • SIN/COS/TAN:三角函数,接受弧度作为输入
  • ASIN/ACOS/ATAN:反三角函数,返回弧度值

本用户手册提供了 RADIANS 函数的完整使用说明,特别针对电力系统中的相位分析、功率因数计算、三相平衡监测等实际需求,方便电力行业用户快速上手并应用于生产环境。

关于 TDengine

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

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

相关推荐
大数据魔法师4 分钟前
MySQL(六) - 视图管理
数据库·mysql
大河qu9 分钟前
HCIP-IoT/H52-111 真题详解(章节A),行业解决方案与华为云 /Part1
物联网·华为云·物联网解决方案·hcip-iot·h52-111
hyiciw_64215 分钟前
R语言在线编译器 | 提供快速便捷的编程环境,助力数据分析与学习
时序数据库
Hello.Reader19 分钟前
用 Doris 托底实时明细与聚合Flink CDC Pipeline 的 Doris Sink 实战
大数据·flink
Hello.Reader20 分钟前
从 WAL 到 Fluss->Flink CDC Postgres Connector 端到端同步实战
数据库·flink
千桐科技27 分钟前
数据库设计最佳实践:我们团队沉淀下来的规范
数据库·代码规范·设计
程途拾光15828 分钟前
用流程图优化工作流:快速识别冗余环节,提升效率
大数据·论文阅读·人工智能·流程图·论文笔记
武子康41 分钟前
大数据-152 Apache Druid 集群模式 [下篇] 低内存集群实操:JVM/DirectMemory与启动脚本
大数据·后端·nosql
踏浪无痕44 分钟前
PostgreSQL实例进程:从启动到运行的完整故事
数据库·postgresql
北京耐用通信44 分钟前
从‘卡壳’到‘丝滑’:耐达讯自动化PROFIBUS光纤模块如何让RFID读写器实现‘零延迟’物流追踪?”
网络·人工智能·科技·物联网·网络协议·自动化