刷新由 window_startwindow_end 给定的刷新窗口中连续聚合的所有存储桶。

连续聚合在时间桶中物化聚合。例如,1 天数据的最小值、最大值、平均值,由 time_bucket 间隔确定。因此,当刷新连续聚合时,仅刷新完全适合刷新窗口的存储桶。换句话说,不可能计算不完整存储桶的聚合。因此,任何不适合给定刷新窗口的存储桶都将被排除在外。

该函数期望窗口参数值具有与连续聚合的时间桶表达式兼容的时间类型——例如,如果时间桶在 TIMESTAMP WITH TIME ZONE 中指定,则开始和结束时间应为日期或时间戳类型。请注意,使用 TIMESTAMP WITH TIME ZONE 类型的连续聚合与 UTC 时区对齐,因此,如果 window_startwindow_end 在本地时区中指定,则刷新时需要考虑相对于 UTC 的任何时区偏移,以与存储桶边界对齐。

为了提高连续聚合刷新的性能,请参阅 CREATE MATERIALIZED VIEW

名称类型描述
continuous_aggregateREGCLASS要刷新的连续聚合。
window_startINTERVAL, TIMESTAMPTZ, INTEGER要刷新的窗口的开始,必须在 window_end 之前。
window_endINTERVAL, TIMESTAMPTZ, INTEGER要刷新的窗口的结束,必须在 window_start 之后。

您必须根据超表的时间列类型,以不同的方式指定 window_startwindow_end 参数。对于具有 TIMESTAMPTIMESTAMPTZDATE 时间列的超表,将刷新窗口设置为 INTERVAL 类型。对于具有基于整数的时间戳的超表,将刷新窗口设置为 INTEGER 类型。

注意

window_startNULL 值等同于 CAgg 原始超表中的最低更改元素。window_endNULL 值等同于 CAgg 原始超表中的最高更改元素。由于更改元素跟踪在初始 CAgg 刷新后执行,因此在没有 window_startwindow_end 的情况下运行 CAgg 刷新将覆盖整个时间范围。

警告

请注意,不保证所有存储桶都会更新:当存储桶在没有数据更改或仅在 JOIN 中使用的辅助表中发生更改时,刷新不会发生。

名称类型描述
forceBOOLEAN强制刷新 window_startwindow_end 之间时间范围内的每个存储桶,即使存储桶已经刷新。当刷新大量数据时,这可能会非常昂贵。默认为 FALSE

刷新 conditions 连续聚合,时间范围为 2020-01-012020-02-01(不包括结束日期)。

CALL refresh_continuous_aggregate('conditions', '2020-01-01', '2020-02-01');

或者,增量刷新 conditions 连续聚合,时间范围为 2020-01-012020-02-01(不包括结束日期),以 12h 间隔工作

DO
$$
DECLARE
refresh_interval INTERVAL = '12h'::INTERVAL;
start_timestamp TIMESTAMPTZ = '2020-01-01T00:00:00Z';
end_timestamp TIMESTAMPTZ = start_timestamp + refresh_interval;
BEGIN
WHILE start_timestamp < '2020-02-01T00:00:00Z' LOOP
CALL refresh_continuous_aggregate('conditions', start_timestamp, end_timestamp);
COMMIT;
RAISE NOTICE 'finished with timestamp %', end_timestamp;
start_timestamp = end_timestamp;
end_timestamp = end_timestamp + refresh_interval;
END LOOP;
END
$$;

强制 conditions 连续聚合刷新 2020-01-012020-02-01(不包括结束日期)之间的数据,即使数据已经刷新。

CALL refresh_continuous_aggregate('conditions', '2020-01-01', '2020-02-01', force => TRUE);

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页