首页 > 解决方案 > TimescaleDB 连续聚合视图不会在旧存储桶上刷新

问题描述

我正在尝试使用每天刷新一次视图的策略在超表上创建一个连续的聚合视图。

当我创建视图时它第一次运行很流畅,在 Grafana 上一切看起来都很好。然而,几天后,我发现后台作业大多失败,因此只汇总了部分数据。我试图通过使用以下查询来查找发生了什么,但仍然完全不知道为什么作业失败了!

SELECT *
FROM timescaledb_information.job_stats
WHERE hypertable_name = '_materialized_hypertable_17';

我得到的只是

超表模式 超表名 job_id last_run_started_at last_successful_finish 上次运行状态 工作现状 last_run_duration 下一个开始 总运行次数 总成功 total_failures
_timescaledb_internal _materialized_hypertable_17 1013 2021-09-05 10:46:11.810904 2021-09-01 11:53:41.759126 失败的 预定的 0 年 0 月 0 天 0 小时 0 分钟 0.022373 秒 2021-09-08 09:38:41.833277 5 2 3

所以我尝试刷新那些丢失的桶的视图。该命令在几毫秒内完成,并说视图已经是最新的,但事实并非如此!那些部分聚合的存储桶根本没有更新。

CALL refresh_continuous_aggregate('daily_system_agg', '2020-09-01', '2020-09-06');

总之,我有两个问题:

1. 我在哪里可以找到有关后台作业失败原因的更多信息?

2. 为什么refresh_continuous_aggregate没有刷新数据?

创建连续聚合和策略的脚本

CREATE MATERIALIZED VIEW daily_requests_agg
            WITH (timescaledb.continuous) AS (
                                             SELECT
                                                 time_bucket('1 day', timestamp) as time,
                                                 gway,
                                                 dest,
                                                 api,
                                                 count(*) as total
                                             FROM requests
                                             GROUP BY
                                                 time,
                                                 gway,
                                                 dest,
                                                 api
                                                 );

SELECT add_continuous_aggregate_policy('daily_requests_agg',
                                       start_offset => INTERVAL '1 month',
                                       end_offset => INTERVAL '1 day',
                                       schedule_interval => INTERVAL '1 day');

标签: timescaledbcontinuous-aggregates

解决方案


推荐阅读