Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何使用TimescaleDB修复timeseries?_Postgresql_Timescaledb - Fatal编程技术网

Postgresql 如何使用TimescaleDB修复timeseries?

Postgresql 如何使用TimescaleDB修复timeseries?,postgresql,timescaledb,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查询(带窗口)来添加timeseries中缺少的值(复制上个月的值): 这是我通常的疑问: WIT

我有这样的数据:

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查询(带窗口)来添加timeseries中缺少的值(复制上个月的值):

这是我通常的疑问:

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中有一些新的功能,请参阅:间隙填充功能应该可以更轻松地完成您想要的任务

听起来像是想让我看看,但听起来像是我需要的,谢谢。完全错过了文档。不知道是否有任何关于TimescaleDB+GPU的计划
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);