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)
- 數據密度: 根據數據點密度調整
注意事項
- NULL 值處理: 函數自動跳過 NULL 值
- 參數限制: step_val 不能為 0
- 數據要求: 至少需要 2 個有效數據點
- 精度控制:
- 斜率精度:默認保留 6 位小數
- 截距精度:默認保留 6 位小數
- 結果格式: 返回 JSON 格式字符串
- 性能考慮: 大數據集建議配合時間范圍過濾
- 不支持的查詢:
- 不支持 GROUP BY 查詢
- 不支持 INTERVAL 窗口查詢
- 不支持函數嵌套
相關函數
- AVG(): 計算平均值
- STDDEV(): 計算標準差
- SPREAD(): 計算極差
- TWA(): 時間加權平均
通過合理使用 LEASTSQUARES 函數,可以有效地進行智能電表數據的趨勢分析和預測,為電力系統的預測性維護和負載規劃提供重要的數據支撐。
關于 TDengine
TDengine 專為物聯網IoT平臺、工業大數據平臺設計。其中,TDengine TSDB 是一款高性能、分布式的時序數據庫(Time Series Database),同時它還帶有內建的緩存、流式計算、數據訂閱等系統功能;TDengine IDMP 是一款AI原生工業數據管理平臺,它通過樹狀層次結構建立數據目錄,對數據進行標準化、情景化,并通過 AI 提供實時分析、可視化、事件管理與報警等功能。