gpt4 book ai didi

postgresql - 如何使用 TimescaleDB 修复时间序列?

转载 作者:行者123 更新时间:2023-11-29 12:51:12 24 4
gpt4 key购买 nike

我有这样的数据:

Month_event | No_people | Cost
2017-03-01 | 78 | 120000
2017-01-01 | 67 | 220000
2017-07-01 | 121 | 320000
2017-04-01 | 70 | 100000

我通常在我的代码中做的是在 Postgresql 中使用 SQL 查询(窗口化)来添加时间序列中的缺失值(复制前一个月的值):

Month_event | No_people | Cost
2017-01-01 | 67 | 220000
2017-02-01 | 67 | 220000
2017-03-01 | 78 | 120000
2017-04-01 | 70 | 100000
2017-05-01 | 70 | 100000
2017-06-01 | 70 | 100000
2017-07-01 | 121 | 320000

这是我通常的查询:

WITH 
calendar AS (
SELECT interval_date::date FROM generate_series('2005-01-01'::date, (select release_month from mtd), '1 month'::interval) interval_date
),
m AS (
SELECT *, LEAD(monthly_event) OVER (ORDER BY monthly_event) AS next_date
FROM my_data
)
SELECT *
FROM calendar c
JOIN m
ON c.interval_date BETWEEN m.monthly_date AND
(CASE WHEN m.next_date IS NULL THEN date_trunc('month', current_date) ELSE m.next_date - '1 month'::interval END);

作为 Postgres 扩展,我想我可以在 TimescaleDB 上重复使用相同的查询。我想知道是否有更好的 TimescaleDB 解决方案,因为我无法从文档中找到它。

最佳答案

在 TimescaleDB 1.2 中有一些新功能,请参阅:https://blog.timescale.com/sql-functions-for-time-series-analysis/填补空白的东西应该更容易地做你正在寻找的东西。

关于postgresql - 如何使用 TimescaleDB 修复时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53582902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com