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 智能体对数据进行预测与异常检测,提供实时的商业洞察。

相关推荐
小蒜学长5 小时前
springboot基于JAVA的二手书籍交易系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
野犬寒鸦5 小时前
从零起步学习MySQL || 第七章:初识索引底层运用及性能优化(结合底层数据结构讲解)
java·数据库·后端·mysql·oracle
流烟默5 小时前
机器学习中一些场景的模型评估与理解图表
大数据·人工智能·机器学习
6极地诈唬6 小时前
【sqlite】WAL初探
数据库·sqlite
PieroPc6 小时前
用Python Streamlit sqlite3 写一个简单博客
数据库·python·sqlite
海豚调度6 小时前
GSoC 成果公布!印度开发者为 DolphinScheduler 引入通用 OIDC 认证,实现无缝安全访问
大数据·开源·安全认证·oidc·大数据调度·apachedolphinscheduler
啊森要自信6 小时前
【MySQL 数据库】使用C语言操作MySQL
linux·c语言·开发语言·数据库·mysql
想ai抽6 小时前
大数据计算引擎-从源码看Spark AQE对于倾斜的处理
大数据·数据仓库·spark
在未来等你6 小时前
Elasticsearch面试精讲 Day 30:Elasticsearch面试真题解析与答题技巧
大数据·分布式·elasticsearch·搜索引擎·面试