Postgresql

postgres 讀取查詢重新採樣時間序列數據以獲取每小時平均值

  • May 10, 2021

我是 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 子句中。

引用自:https://dba.stackexchange.com/questions/291320