当前位置: 首页 > news >正文

TDengine 数学函数 EXP 用户手册

在这里插入图片描述

EXP 函数用户手册

EXP(expr)

功能说明

返回 e(自然对数的底)的指定乘方后的值,即计算 e^expr。

版本

v3.3.3.0

返回结果类型

DOUBLE。

适用数据类型

数值类型(TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 及其无符号类型)。

嵌套子查询支持

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

适用于

表和超级表。

使用说明

  • expr 为 NULL,返回 NULL。
  • e ≈ 2.718281828459045。
  • 只能与普通列、选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
  • 当输入值过大时,结果可能溢出为 INF(无穷大)。

使用示例

假设有以下智能电表表结构:

CREATE DATABASE power;  
USE power;  CREATE STABLE meters (  ts TIMESTAMP,  current FLOAT,  voltage INT,  phase FLOAT,  temperature FLOAT  
) TAGS (  location VARCHAR(64),  groupId INT  
);  CREATE TABLE d1001 USING meters TAGS ('California.SanFrancisco', 1);  
CREATE TABLE d1002 USING meters TAGS ('California.LosAngeles', 2);  
基础示例

示例 1: 常量计算

taos> SELECT EXP(0);  exp(0)           |
==========================1.000000000000000 |taos> SELECT EXP(1);  exp(1)           |
==========================2.718281828459045 |taos> SELECT EXP(2);  exp(2)           |
==========================7.389056098930650 |taos> SELECT EXP(-1);  exp(-1)           |
==========================0.367879441171442 |

示例 2: NULL 值处理

taos> SELECT EXP(NULL);  exp(null)         |
==========================NULL                    |

示例 3: 不同数值类型

-- 整数类型  
taos> SELECT EXP(5);  exp(5)           |
==========================148.413159102576603 |-- 浮点类型  
taos> SELECT EXP(0.5);  exp(0.5)           |
==========================1.648721270700128 |-- 负数  
taos> SELECT EXP(-2);  exp(-2)            |
==========================0.135335283236613 |
智能电表场景示例

示例 4: 温度指数计算

-- 插入测试数据  
INSERT INTO d1001 VALUES   ('2018-10-03 14:38:05.000', 10.3, 220, 0.31, 25.5),  ('2018-10-03 14:38:15.000', 12.6, 220, 0.33, 28.2),  ('2018-10-03 14:38:16.800', 8.5, 221, 0.32, 22.8);  -- 计算温度的指数值(用于热指数模型)  
taos> SELECT ts, temperature, EXP(temperature/10) AS temp_exp  FROM d1001;  ts          | temperature |     temp_exp          |
===============================================================2018-10-03 14:38:05 |   25.500000 |    12.807060669009985 |2018-10-03 14:38:15 |   28.200000 |    16.864455273619042 |2018-10-03 14:38:16 |   22.800000 |     9.743402582453827 |

示例 5: 与 LN 函数验证

-- 验证 EXP 和 LN 互为反函数  
-- EXP(LN(x)) = x  
taos> SELECT current,  LN(current) AS ln_current,  EXP(LN(current)) AS exp_ln_current  FROM d1001  WHERE current > 0;  current   |   ln_current    | exp_ln_current |
================================================10.300000 |    2.332143769  |     10.300000  |12.600000 |    2.533697206  |     12.600000  |8.500000 |    2.140066163  |      8.500000  |

示例 6: 与其他数学函数组合

-- 计算增长率的指数函数  
taos> SELECT ts,  temperature,  EXP(temperature/100) AS exp_temp,  POW(2.718281828, temperature/100) AS pow_temp  FROM d1001;  -- 结合 ABS 函数  
taos> SELECT ts,  phase,  EXP(ABS(phase)) AS exp_abs_phase  FROM d1001;  

示例 7: 在 WHERE 子句中使用

-- 查询指数值大于特定阈值的记录  
taos> SELECT ts, temperature  FROM d1001  WHERE EXP(temperature/10) > 10;  ts          | temperature |
====================================2018-10-03 14:38:05 |   25.500000 |2018-10-03 14:38:15 |   28.200000 |

示例 8: 按设备分组统计

-- 统计各地区温度指数的平均值  
taos> SELECT location,  AVG(temperature) AS avg_temp,  AVG(EXP(temperature/10)) AS avg_temp_exp  FROM meters  WHERE temperature IS NOT NULL  GROUP BY location;  location           | avg_temp | avg_temp_exp  |
=========================================================California.SanFrancisco    |   25.500 |    12.807061  |California.LosAngeles      |   27.300 |    15.234567  |

示例 9: 时间窗口计算

-- 按小时窗口计算温度指数  
taos> SELECT _wstart AS time_window,  AVG(EXP(temperature/10)) AS avg_temp_exp,  MAX(EXP(temperature/10)) AS max_temp_exp  FROM meters  WHERE ts >= NOW - 1d  PARTITION BY location  INTERVAL(1h);  

实际生产场景应用

场景 1: 电力系统 - 热老化模型

-- 根据温度计算设备老化速率  
-- 阿伦尼乌斯方程:老化速率与 EXP(-Ea/kT) 成正比  
-- Ea: 活化能,k: 玻尔兹曼常数,T: 温度(K)  
SELECT   tbname,  ts,  temperature,  EXP(-11600 / (8.617e-5 * (temperature + 273.15))) AS aging_rate  
FROM meters  
WHERE ts >= NOW - 7d  
ORDER BY aging_rate DESC  
LIMIT 100;  

场景 2: 负载预测 - 指数平滑

-- 使用指数平滑进行负载预测  
-- 权重随时间衰减  
SELECT   _wstart AS time_window,  SUM(current * EXP(-0.1 * TIMEDIFF(NOW, ts, 1h))) /   SUM(EXP(-0.1 * TIMEDIFF(NOW, ts, 1h))) AS weighted_avg_current  
FROM meters  
WHERE ts >= NOW - 24h  
PARTITION BY location  
INTERVAL(1h);  

场景 3: 能耗优化 - 非线性成本模型

-- 计算非线性电力成本  
-- 成本随负载呈指数增长  
SELECT   _wstart AS time_window,  SUM(current * voltage) AS total_power,  SUM(0.1 * EXP(current * voltage / 1000)) AS exponential_cost  
FROM meters  
WHERE ts >= NOW - 1d  
PARTITION BY location  
INTERVAL(1h)  
ORDER BY exponential_cost DESC;  

场景 4: 按地区分组统计(使用子查询)

-- 先按时间窗口聚合,再按地区分组  
SELECT   location,  AVG(avg_temp_exp) AS avg_of_avg_temp_exp,  MAX(max_temp_exp) AS max_of_max_temp_exp  
FROM (  SELECT   _wstart,  location,  AVG(EXP(temperature/10)) AS avg_temp_exp,  MAX(EXP(temperature/10)) AS max_temp_exp  FROM meters  WHERE ts >= NOW - 7d  PARTITION BY tbname, location  INTERVAL(1h)  
)  
GROUP BY location;

注意事项

  • 数值溢出:当输入值过大时(通常大于 700),EXP 函数的结果会溢出为 INF(无穷大)。
  • 精度问题:由于浮点运算的精度限制,极小值的指数可能接近 0。
  • 性能考虑:EXP 是计算密集型函数,在大数据量场景下应合理使用。
  • 不支持聚合混用:不能与聚合函数(如 SUM、AVG)直接组合使用在同一层级,需使用子查询。
  • 负数指数:EXP 函数支持负数输入,返回 0 到 1 之间的值。
  • 零的特殊性:EXP(0) 始终等于 1。
  • INTERVAL 与 GROUP BY:不能在同一查询层级同时使用 INTERVAL 和 GROUP BY,需要使用 PARTITION BY 或嵌套子查询。

数学关系

  • EXP(x) = e^x,其中 e ≈ 2.718281828459045
  • EXP(0) = 1
  • EXP(1) = e ≈ 2.718281828459045
  • LN(EXP(x)) = x(互为反函数)
  • EXP(LN(x)) = x(x > 0)
  • EXP(x + y) = EXP(x) × EXP(y)
  • EXP(x - y) = EXP(x) / EXP(y)

相关函数

  • LN: 自然对数函数,EXP 的反函数
  • LOG: 对数函数
  • POW: 幂函数
  • SQRT: 平方根函数
  • EXPLN 互为反函数,常用于指数增长和对数变换

关于 TDengine

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

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

http://www.dtcms.com/a/481734.html

相关文章:

  • C语言自定义变量类型结构体理论:从初见到精通​​​​​​​(下)
  • 医疗网络功能虚拟化与深度强化学习的动态流量调度优化研究(下)
  • SpringMVC练习:加法计算器与登录
  • 小模型的应用
  • 深度学习进阶(一)——从 LeNet 到 Transformer:卷积的荣光与注意力的崛起
  • QPSK信号载波同步技术---极性Costas 法载波同步
  • 盘多多网盘搜索苏州seo排名公司
  • 国外有趣的网站wordpress小视频主题
  • RTC、UDP、TCP和HTTP以及直播等区别
  • Java面试场景:从Spring Web到Kafka的音视频应用挑战
  • 基于EDBO-ELM(改进蜣螂算法优化极限学习机)数据回归预测
  • gaussdb数据库的集中式和分布式
  • Ubuntu中使用Hadoop的HDFS和MapReduce
  • F024 RNN+Vue+Flask电影推荐可视化系统 python flask mysql 深度学习 echarts
  • Building-GAN模型结构详解
  • web开发,学院培养计划系统,基于Python,FlaskWeb,Mysql数据库
  • 三维旋转矩阵的左乘与右乘
  • c 网站开发数据库连接网站扫码充值怎么做的
  • 第三方媒体流压力测试:k6插件xk6-webrtc的使用来测试媒体流的性能
  • 综合门户媒体发稿哪家靠谱
  • iis网站属性没有asp.net微信订阅号做微网站
  • 【Nest】权限管理——RBAC/CASL
  • 使用LSTM进行人类活动识别
  • 列表标签之有序标签(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • AI时代BaaS | 开源的后端即服务(BaaS)平台Supaba
  • 达梦存储结构篇
  • 桂林网站制作网站佛山公共交易资源平台
  • 域名验证网站如何找推广平台
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(1):文法運用
  • C++面向对象进阶:从构造函数到static成员