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 提供实时分析、可视化、事件管理与报警等功能。

相关推荐
aristo_boyunv4 小时前
Redis发布订阅【充当消息中间件】
数据库·redis·缓存
zz-zjx5 小时前
MySQL 开源主从复制实战指南(SRE 可靠性优先版)
数据库·mysql·开源
Microsoft Word11 小时前
向量数据库与RAG
数据库·人工智能·向量数据库·rag
艾德金的溪12 小时前
redis-7.4.6部署安装
前端·数据库·redis·缓存
小光学长12 小时前
基于Vue的2025年哈尔滨亚冬会志愿者管理系统5zqg6m36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
我的offer在哪里13 小时前
Redis
数据库·redis·缓存
点灯小铭14 小时前
基于单片机的多模式自动洗衣机设计与实现
数据库·单片机·嵌入式硬件·毕业设计·课程设计
潜心编码14 小时前
基于python的仓库管理系统
数据库