時序資料從通用資料庫切換到influxdb後,在查詢、分析方面能獲取哪些便利?

耗子哥信徒發表於2024-07-14

資料抽稀

如感測器5s上報一次資料,某些場景下,為了效能考慮,需要20s或者5min返回一個point

select last(mileage) from device_data_old where deviceId= '00130846142' and time> now() -60m group by time(5m);

image

注意: 03:40 取的是03:44:55時間點的值。即time返回的是滾動視窗的開始時間。

https://docs.influxdata.com/influxdb/v2/query-data/influxql/functions/selectors/

滾動平均演算法(Rolling Average)

select MOVING_AVERAGE(speed,10) from device_data_old where deviceId= '00130846142' and time> now() -60m;

image

https://docs.influxdata.com/influxdb/v2/query-data/influxql/functions/transformations/#moving_average

滾動平均的計算步驟如下:

  1. 選擇視窗大小:確定滾動視窗的大小(通常是一個固定的時間段或資料點的數量)。
  2. 計運算元集平均值:對於時間序列中的每一個資料點,計算以該點為中心的滾動視窗內所有資料點的平均值。
  3. 移動視窗:將視窗從資料集的開始位置逐漸向右移動,每次移動一個資料點,重複步驟2,直到資料集的末尾。

滾動平均在許多領域都有廣泛的應用:

  1. 股票市場分析:用於平滑股價波動,識別股票價格的長期趨勢,常用的視窗大小有20日、50日和200日等。
  2. 訊號處理:用於濾波和平滑訊號,減少噪聲影響,提高訊號的穩定性。
  3. 經濟資料分析:用於分析經濟指標(如GDP、失業率等)的變化趨勢,幫助制定經濟政策。
  4. 工業生產:用於監控生產過程中的引數變化,及時發現並處理異常情況。
  5. 氣象學:用於平滑溫度、降水量等氣象資料,識別長期氣候趨勢。

計算點差值

如計算兩個點之間的里程值差值。

select * from (select DIFFERENCE(mileage) as diff from device_data_old where time > now() -1m group by deviceId) where diff>1;

計算點值變化率

Returns the non-negative rate of change between subsequent field values.
https://docs.influxdata.com/influxdb/v2/query-data/influxql/functions/transformations/#non_negative_derivative

計算累計里程

mileage是車輛儀表盤里程(有時候會清零),現在要計算車輛一天的累計行駛里程,方法:

select sum(mileageDiff) from (select NON_NEGATIVE_DIFFERENCE(mileage) as mileageDiff from device_data_old where deviceId= '14162727998' and time> now() - 13h);

相關文章