postgresql - 如何使用 TimescaleDB 修复时间序列?
问题描述
我有这样的数据:
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/填补空白的东西应该更容易满足您的需求.
推荐阅读
- r - R中是否有任何类似字典的结构
- haskell - 如何在 Haskell 中制作列表地图?
- kubernetes - 身份验证问题:GitLab CI/CD 作业在运行“kubectl apply -f deployment.yaml”时失败
- python-3.x - '不允许无效请求 URL 查询参数' Django-oauth2 500 错误
- python - MongoDB 更改流使用 getMore 导致 COLLSCAN
- ssl-certificate - 在 Windows 中生成自签名证书
- python - 将模块传递给python中的变量
- tensorflow - 在 Tensorflow 2 中使用保存的模型时验证结果的差异
- oracle - PLSQL oracle 的 FOR 循环中是否需要保存点?
- intellij-idea - 如何在 IntelliJ CLion 中清理编译器文件 *.d?