TDengine 数学函数 PI 用户手册

PI 函数

语法

sql 复制代码
PI()

功能说明

  • 返回圆周率常量 π,约等于 3.141592653589793。
  • 为确定性标量函数,可在任意数值表达式中参与计算。

版本

  • v3.3.3.0

返回结果类型

  • DOUBLE

适用数据类型

  • 无参数

嵌套子查询支持

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

适用于

  • 表和超级表

使用说明

  • PI() 无参数、对所有行返回同一常量。
  • 常与三角函数(SIN/COS/TAN)、弧度/角度换算(手工使用 x180/PI() 或 xPI()/180)配合。
  • 只能与普通列、选择(Selection)、投影(Projection)一起使用,不与聚合(Aggregation)在同一层直接混用。

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

sql 复制代码
-- 建库与使用
CREATE DATABASE IF NOT EXISTS power;
USE power;

-- 智能电表表结构(按要求)
CREATE STABLE meters (
  ts TIMESTAMP,
  current FLOAT,
  voltage INT,
  power DOUBLE
) TAGS (
  groupid INT,
  location VARCHAR(64)
);

-- 子表
CREATE TABLE d1001 USING meters TAGS (1, 'SF');
CREATE TABLE d1002 USING meters TAGS (2, 'LA');

-- 写入数据
INSERT INTO d1001 VALUES
  ('2024-01-01 10:00:00.000', 10.3, 220, 2266.0),
  ('2024-01-01 10:01:00.000', 12.6, 221, 2784.6),
  ('2024-01-01 10:02:00.000',  8.5, 223, 1895.5);

INSERT INTO d1002 VALUES
  ('2024-01-01 10:00:00.000',  9.0, 219, 1971.0),
  ('2024-01-01 10:01:00.000', 14.0, 222, 3108.0),
  ('2024-01-01 10:02:00.000',  7.2, 220, 1584.0);

使用示例

1) 基础用法(常量与三角函数)

sql 复制代码
-- 返回 π 常量
SELECT PI();

-- 经典值:sin(π/2)=1, cos(π)= -1
SELECT SIN(PI()/2) AS sin_half_pi, COS(PI()) AS cos_pi;

2) 弧度与角度换算

sql 复制代码
-- 将 180° 转为弧度:π = 180° * π / 180
SELECT 180 * PI() / 180 AS pi_by_degree;

-- 将弧度转为角度:x(弧度) * 180 / π
SELECT (PI()/3) * 180 / PI() AS deg_of_pi_over_3;

3) 基于功率因数角(电力分析)计算

目的

  • 利用 P≈V·I·cosφ,反推功率因数角 φ;用 φ(弧度) 与 φ(角度) 评估功率因数状态、无功补偿需求等。
sql 复制代码
-- φ_rad = ACOS(P/(V*I))
-- φ_deg = φ_rad * 180 / PI()
SELECT
  ts,
  current,
  voltage,
  power,
  ACOS(power/(voltage*current))                 AS phi_rad,
  ACOS(power/(voltage*current)) * 180 / PI()    AS phi_deg
FROM d1001
WHERE voltage*current > 0;

4) 交流角频率/周期计算(50/60Hz)

目的

  • 由频率 f 计算角频率 ω=2·π·f 与周期 T=1/f,用于采样策略、信号分析与滤波设计。
sql 复制代码
-- 50Hz
SELECT 2*PI()*50 AS omega_50, 1.0/50 AS period_50;

-- 60Hz
SELECT 2*PI()*60 AS omega_60, 1.0/60 AS period_60;

5) 与表列组合的表达式示例

目的

  • 在查询中直接引用 π 常量与列混合运算,形成可读、可维护的物理量表达式。
sql 复制代码
-- 以"角频率*采样间隔"的形式构建一个无量纲相位步长(示例中采样间隔假设 1/100 秒)
SELECT
  ts,
  voltage,
  current,
  power,
  2*PI()*50*(1.0/100) AS phase_step_50hz
FROM d1002
ORDER BY ts;

生产场景应用与函数意义

  • 交流电分析与控制

    • 目的:通过 ω=2·π·f、φ(功率因数角) 进行滤波器设计、相位补偿、谐波分析与无功优化。
    • 意义:PI() 提供标准数学常量,保证公式书写直观、表达严谨。
  • 旋转/振动工况换算

    • 目的:在转速换算(rad/s 与 RPM)、周期性信号相位步长计算中直接使用 π,减少硬编码常量风险。
    • 意义:统一工程计算口径,提高可维护性与跨团队理解成本。
  • 测试与可视化

    • 目的:在报表或快速诊断 SQL 中构造标准角度/弧度换算与三角函数校验表达式。
    • 意义:便于数据侧快速验证算法假设与阈值。

注意事项

  • PI() 为零参常量函数,结果为 DOUBLE。
  • 与聚合列同选时需遵循 SQL 分组规则。

关于 TDengine

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

相关推荐
captain3764 分钟前
MyBatis(入门5)其他查询操作
java·数据库·spring boot·mybatis
大大大大晴天42 分钟前
从 Prompt 到 Tool Calling:AI Agent 如何稳定连接程序世界
大数据·agent
小此方1 小时前
Re:Mysql数据库基础篇(八):详细讲解复合查询、多表查询、自连接、多行、多列子查询与合并查询
数据库·mysql
xszivvvv1 小时前
Mariadb数据库frm文件异常,如何恢复数据
数据库·mariadb
key_3_feng2 小时前
反馈闭环:Agent 自我进化的真正引擎
大数据·agent
smile_life_2 小时前
MySQL 设置 防止账户被暴力破解
数据库·mysql
ShineWinsu2 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
EnCi Zheng2 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
GlobalInfo2 小时前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人
测试盐2 小时前
oracle数据库卡顿排查
数据库·oracle