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

自托管产品

MST

时间分桶对于实时分析至关重要。time_bucket 函数可以将超表中的数据聚合成时间桶。例如,5 分钟、1 小时或 3 天。它类似于 PostgreSQL 的 date_bin 函数,但在桶大小和开始时间方面提供了更大的灵活性。

您可以使用它对数据进行汇总,以便进行分析或降采样。例如,您可以计算过去一天传感器读数的 5 分钟平均值。您可以根据需要执行这些汇总,也可以在连续聚合中预先计算。

本节解释了时间分桶的工作原理。有关 time_bucket 函数的示例,请参阅“使用 time_bucket 聚合时序数据”一节。

时间分桶将数据分组到时间间隔中。使用 time_bucket,间隔长度可以是任意数量的微秒、毫秒、秒、分钟、小时、天、周、月、年或世纪。

time_bucket 函数通常与 GROUP BY 结合使用以聚合数据。例如,您可以计算桶内值的平均值、最大值、最小值或总和。

Diagram showing time-bucket aggregating data into daily buckets, and calculating the daily sum of a value

原点决定了时间桶的开始和结束时间。默认情况下,时间桶不会从数据中的最早时间戳开始。通常有更合理的时间。例如,您可能在 00:37 收集到第一个数据点,但您可能希望您的每日桶从午夜开始。同样,您可能在星期三收集到第一个数据点,但您可能希望您的每周桶从星期日或星期一开始计算。

相反,时间是根据从原点开始的间隔划分为桶的。下图显示了如何使用 2 周桶的示例。桶的第一个可能开始日期是 origin。桶的下一个可能开始日期是 origin + bucket interval。如果您的第一个时间戳不恰好落在可能的开始日期,则使用紧邻的先前开始日期作为桶的开始。

Diagram showing how time buckets are calculated from the origin

例如,假设您的数据最早时间戳是 2020 年 4 月 24 日。如果您按两周的间隔进行分桶,则第一个桶不会从 4 月 24 日(星期五)开始。它也不会从紧邻的 4 月 20 日(星期一)开始。它将从 4 月 13 日开始,因为您可以从 2000 年 1 月 3 日(本例中的默认原点)以两周为增量计数到达 2020 年 4 月 13 日。

对于不包含月或年的间隔,默认原点是 2000 年 1 月 3 日。对于月、年或世纪间隔,默认原点是 2000 年 1 月 1 日。对于整数时间值,默认原点是 0。

这些选择使得时间桶的时间范围更直观。由于 2000 年 1 月 3 日是星期一,每周时间桶从星期一开始。这符合计算日历周的 ISO 标准。每月和每年时间桶使用 2000 年 1 月 1 日作为原点。这使得它们可以从日历月或日历年的第一天开始。

如果您喜欢其他原点,可以使用origin 参数自行设置。例如,要让周从星期日开始,请将原点设置为 2000 年 1 月 2 日星期日。

原点时间取决于您的时间值的数据类型。

如果您使用 TIMESTAMP,默认情况下,桶的开始时间与 00:00:00 对齐。每日和每周桶从 00:00:00 开始。较短的桶从原点日期 00:00:00 开始,并按桶增量计数到达的时间开始。

如果您使用 TIMESTAMPTZ,默认情况下,桶的开始时间与 00:00:00 UTC 对齐。要将时间桶与其他时区对齐,请设置 timezone 参数。

关键词

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