Postgresql
postgres 讀取查詢重新採樣時間序列數據以獲取每小時平均值
我是 SQL 新手,試圖學習如何對時間序列數據進行讀取查詢。有人可以給我一個關於如何將間隔時間序列數據重新採樣為 postgres 讀取查詢的每小時平均值的提示嗎?
我的表名為 building_data ,其中有幾列名為
time, metric, value, kv_tags, m_tags
time
是我的日期/時間戳列,我試圖查看是否可以將value
列中的數據重新採樣為每小時平均值。下面WHERE
的查詢是為了過濾掉我有興趣查看數據的特定設備。如果這沒有意義,我很抱歉。對於第一個計時器,此 sql 查詢似乎可以工作,但它沒有包含一些以每小時平均值重新採樣數據的過程,非常感謝任何提示。
SELECT "time" AS "time", metric AS metric, value, kv_tags, m_tags FROM building_data WHERE kv_tags->'equip_name' = '["35201"]' AND m_tags IS NOT NULL ORDER BY time desc limit 1000
您可以使用time_bucket函式來製作它。
例子:
SELECT time_bucket('1 hour', "time") AS hour, metric, avg(value) FROM building_data WHERE kv_tags->'equip_name' = '["35201"]' AND m_tags IS NOT NULL GROUP BY hour, metric ORDER BY hour limit 1000
請注意,我正在簡化查詢,如果您想包含
kv_tags
並且m_tags
您還需要使用聚合函式或將它們添加到 group by 子句中。