在这里插入图片描述

LEASTSQUARES 函数用户手册

函数定义

LEASTSQUARES(expr, start_val, step_val)

功能说明

LEASTSQUARES() 函数对指定列的数据进行最小二乘法线性拟合,返回拟合直线的斜率(slope)和截距(intercept)。该函数基于线性回归算法,计算最佳拟合直线 y = ax + b 的参数。

版本要求

  • 最低版本: v3.0.0.0

返回值

  • 数据类型: VARCHAR
  • 返回内容: JSON格式字符串,包含斜率和截距
  • 格式: {"slop":斜率值, "intercept":截距值}

参数说明

参数 类型 说明 取值范围
expr 表达式 要进行线性拟合的数值字段 数值类型
start_val 数值 X轴起始值 数值类型
step_val 数值 X轴步长值 数值类型,不能为0

适用数据类型

LEASTSQUARES 函数支持以下数据类型:

  • 数值类型: TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、UTINYINT、USMALLINT、UINT、UBIGINT
  • NULL 值处理: 自动跳过 NULL 值

适用范围

  • 表类型: 表和超级表
  • 查询支持: 支持聚合查询
  • 函数特性: 聚合函数、跳过 NULL 值
  • 限制: 不支持 GROUP BY 查询、不支持窗口查询

智能电表场景应用示例

基于智能电表数据库结构:

-- 数据库和表结构
USE test;
-- meters 超级表包含 ts, current, voltage, phase 字段和 location, groupid 标签

基础用法示例

电流趋势分析
-- 分析电流数据的线性趋势(以时间序列为X轴)
SELECT LEASTSQUARES(current, 1, 1) as current_trend FROM meters;

-- 分析电压数据的线性趋势
SELECT LEASTSQUARES(voltage, 0, 2) as voltage_trend FROM meters;

-- 分析相位数据的线性趋势
SELECT LEASTSQUARES(phase, 0, 0.5) as phase_trend FROM meters;

设备性能退化分析

单设备趋势分析
-- 分析特定设备的电流退化趋势
SELECT LEASTSQUARES(current, 1, 1) as degradation_trend 
FROM meters 
WHERE tbname = 'd1001';

-- 分析特定设备的电压稳定性趋势
SELECT LEASTSQUARES(voltage, 0, 1) as voltage_stability 
FROM meters 
WHERE tbname = 'd1001';
时间段内趋势分析
-- 分析最近一周的电流变化趋势
SELECT LEASTSQUARES(current, 1, 1) as weekly_current_trend 
FROM meters 
WHERE ts >= NOW() - 7d;

-- 分析最近24小时的电压变化趋势
SELECT LEASTSQUARES(voltage, 0, 0.1) as daily_voltage_trend 
FROM meters 
WHERE ts >= NOW() - 1d;

负载预测分析

功耗趋势预测
-- 基于历史数据预测功耗趋势
SELECT LEASTSQUARES(current, 0, 1) as power_consumption_trend 
FROM meters 
WHERE ts >= NOW() - 30d;

-- 分析不同时间粒度的功耗变化
SELECT LEASTSQUARES(current, 1, 0.5) as fine_grained_trend 
FROM meters 
WHERE ts >= NOW() - 7d;
设备效率分析
-- 分析设备效率变化趋势(基于电流-电压关系)
SELECT LEASTSQUARES(current, 100, 10) as efficiency_trend 
FROM meters 
WHERE voltage > 200 AND voltage < 250;

区域电网分析

特定区域趋势
-- 分析北京地区的用电趋势
SELECT LEASTSQUARES(current, 0, 1) as beijing_usage_trend 
FROM meters 
WHERE location = 'Beijing';

-- 分析上海地区的电压质量趋势
SELECT LEASTSQUARES(voltage, 220, 1) as shanghai_voltage_trend 
FROM meters 
WHERE location = 'Shanghai';
工作日vs周末趋势对比
-- 分析工作日用电趋势



-- 分析周末用电趋势
SELECT LEASTSQUARES(current, 1, 1) as weekend_trend 
FROM meters 
WHERE WEEKDAY(ts) IN (6, 0);

异常检测应用

设备老化检测
-- 检测设备电流输出的线性衰减
SELECT LEASTSQUARES(current, 0, 1) as aging_trend 
FROM meters 
WHERE tbname = 'd1001' AND ts >= NOW() - 90d;

-- 检测电压稳定性衰减
SELECT LEASTSQUARES(voltage, 220, 0.1) as voltage_degradation 
FROM meters 
WHERE tbname = 'd1001' AND ts >= NOW() - 30d;
负载异常趋势
-- 检测异常负载增长趋势
SELECT LEASTSQUARES(current, 0, 1) as load_growth_trend 
FROM meters 
WHERE current > 20 AND ts >= NOW() - 14d;

能耗优化分析

季节性趋势分析
-- 分析春季用电趋势
SELECT LEASTSQUARES(current, 1, 1) as spring_trend 
FROM meters 
WHERE MONTH(ts) IN (3, 4, 5);

-- 分析夏季用电趋势
SELECT LEASTSQUARES(current, 1, 1) as summer_trend 
FROM meters 
WHERE MONTH(ts) IN (6, 7, 8);
时段用电模式
-- 分析白天用电趋势(6:00-18:00)
SELECT LEASTSQUARES(current, 6, 1) as daytime_trend 
FROM meters 
WHERE HOUR(ts) BETWEEN 6 AND 18;

-- 分析夜间用电趋势(19:00-5:00)
SELECT LEASTSQUARES(current, 19, 1) as nighttime_trend 
FROM meters 
WHERE HOUR(ts) >= 19 OR HOUR(ts) <= 5;

实际应用场景

设备维护预测
-- 预测设备维护需求(基于性能衰减趋势)
SELECT LEASTSQUARES(current, 0, 0.1) as maintenance_prediction 
FROM meters 
WHERE tbname = 'd1001' AND ts >= NOW() - 180d;
电网负载规划
-- 为电网扩容提供趋势数据
SELECT LEASTSQUARES(current, 0, 1) as grid_expansion_trend 
FROM meters 
WHERE ts >= NOW() - 365d;
能效评估
-- 评估节能措施效果
SELECT LEASTSQUARES(current, 0, 1) as energy_saving_effect 
FROM meters 
WHERE ts >= '2024-01-01' AND ts < '2024-04-01';

结果解释示例

假设查询结果为:{"slop":-0.001234, "intercept":12.500000}

  • 斜率(slope): -0.001234,表示每个时间步长,数值平均下降 0.001234 个单位
  • 截距(intercept): 12.5,表示在 X=0 时的预测 Y 值为 12.5
趋势判断
-- 基于斜率判断趋势类型
-- 正斜率:上升趋势
-- 负斜率:下降趋势  
-- 接近0:稳定趋势

-- 示例:判断设备性能趋势
SELECT 
    CASE 
        WHEN LEASTSQUARES(current, 0, 1) LIKE '%"slop":-%' THEN '性能下降趋势'
        WHEN LEASTSQUARES(current, 0, 1) LIKE '%"slop":0.%' THEN '性能稳定'
        ELSE '性能上升趋势'
    END as performance_trend
FROM meters 
WHERE tbname = 'd1001';

参数配置建议

start_val 选择

  • 时间序列分析: 通常设为 0 或 1
  • 基于实际值: 设为数据范围的起始值
  • 归一化分析: 设为 0 便于比较

step_val 选择

  • 精细分析: 使用较小步长(如 0.1, 0.5)
  • 粗略趋势: 使用较大步长(如 1, 10)
  • 数据密度: 根据数据点密度调整

注意事项

  1. NULL 值处理: 函数自动跳过 NULL 值
  2. 参数限制: step_val 不能为 0
  3. 数据要求: 至少需要 2 个有效数据点
  4. 精度控制:
    • 斜率精度:默认保留 6 位小数
    • 截距精度:默认保留 6 位小数
  5. 结果格式: 返回 JSON 格式字符串
  6. 性能考虑: 大数据集建议配合时间范围过滤
  7. 不支持的查询:
    • 不支持 GROUP BY 查询
    • 不支持 INTERVAL 窗口查询
    • 不支持函数嵌套

相关函数

  • AVG(): 计算平均值
  • STDDEV(): 计算标准差
  • SPREAD(): 计算极差
  • TWA(): 时间加权平均

通过合理使用 LEASTSQUARES 函数,可以有效地进行智能电表数据的趋势分析和预测,为电力系统的预测性维护和负载规划提供重要的数据支撑。

关于 TDengine

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐