Timescale Cloud:性能、扩展、企业版

自托管产品

MST

在由 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
refresh_newest_firstBOOLEAN设置为 FALSE 以优先刷新最旧的数据。默认为 TRUE

刷新 2020-01-012020-02-01 之间的连续聚合 conditions(不包含结束日期)。

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

或者,以 12h 的间隔,增量刷新 2020-01-012020-02-01 之间的连续聚合 conditions(不包含结束日期)

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
$$;

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

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

关键词

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