降采样函数
ToolkitTimescaleDB Toolkit 函数在 Timescale 社区版中可用。它们自动包含在 Timescale 中,但对于自托管的 TimescaleDB,必须单独安装。点击了解更多。介绍
降采样您的数据,以便在保留较少数据点的情况下可视化趋势。降采样将一组值替换为更小的一组,这组值高度代表原始数据。这对于图形应用程序特别有用。
警告
此函数组包含一些实验性函数。实验性函数可能会在未来的版本中更改或删除。我们不建议在生产环境中使用它们。实验性函数标有 Experimental 标签。
函数
- asap_smooth
- 使用 ASAP 平滑算法降采样时间序列
- gp_lttb
- Experimental使用最大三角形三桶法降采样时间序列,同时保留原始数据中的空白
- lttb
- 使用最大三角形三桶法降采样时间序列
asap_smooth(ts TIMESTAMPTZ,value DOUBLE PRECISION,resolution INT) RETURNS Timevector
使用 ASAP 平滑算法降采样您的数据。此算法保留输入数据的近似形状和较大趋势,同时最大限度地减少点之间的局部差异。
必需参数
名称 | 类型 | 描述 |
---|---|---|
ts | TIMESTAMPTZ | 每个数据点的时间戳 |
value | DOUBLE PRECISION | 每个时间戳的值 |
resolution | INT | 要返回的近似点数。决定结果图表的水平分辨率。 |
返回值
列 | 类型 | 描述 |
---|---|---|
asap_smooth | Timevector | 一个对象,表示从开始时间起按设定间隔发生的一系列值。可以使用 unnest 解包。有关更多信息,请参阅关于 timevectors 的文档。 |
示例
此示例使用一个名为 metrics
的表,其中包含 date
和 reading
列。这些列包含在较长时间间隔内累积的测量值。此示例采用这些数据,并提供大约 10 个点的平滑表示,但仍然显示任何异常读数:
SET TIME ZONE 'UTC';CREATE TABLE metrics(date TIMESTAMPTZ, reading DOUBLE PRECISION);INSERT INTO metricsSELECT'2020-1-1 UTC'::timestamptz + make_interval(hours=>foo),(5 + 5 * sin(foo / 12.0 * PI()))FROM generate_series(1,168) foo;SELECT * FROM unnest((SELECT asap_smooth(date, reading, 8)FROM metrics));
time | value------------------------+---------------------2020-01-01 01:00:00+00 | 5.36648145657226652020-01-01 21:00:00+00 | 5.9494692640906442020-01-02 17:00:00+00 | 5.5829878075183772020-01-03 13:00:00+00 | 4.6335185434277332020-01-04 09:00:00+00 | 4.0505307359093572020-01-05 05:00:00+00 | 4.4170121924816232020-01-06 01:00:00+00 | 5.3664814565722682020-01-06 21:00:00+00 | 5.949469264090643
gp_lttb(ts TIMESTAMPTZ,value DOUBLE PRECISION,resolution INT[, gapsize INTERVAL]) RETURNS Timevector
使用 最大三角形三桶算法降采样您的数据,同时保留底层数据中的空白。此方法是 LTTB 算法的专门化版本。
必需参数
名称 | 类型 | 描述 |
---|---|---|
ts | TIMESTAMPTZ | 每个数据点的时间戳 |
value | DOUBLE PRECISION | 每个时间戳的值 |
resolution | INT | 要返回的近似点数。决定结果图表的水平分辨率。 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
gapsize | INTERVAL | 划分输入的最小空白大小 |
返回值
列 | 类型 | 描述 |
---|---|---|
gp_lttb | Timevector | 一个对象,表示从开始时间起按设定间隔发生的一系列值。可以使用 unnest 解包。有关更多信息,请参阅关于 timevectors 的文档。 |
示例
此示例使用一个包含原始数据的表,这些原始数据生成为正弦波,并从数据中间删除了一天。您可以使用保留空白的 LTTB 来降采样数据,同时保留缺失区域的边界
SET TIME ZONE 'UTC';CREATE TABLE metrics(date TIMESTAMPTZ, reading DOUBLE PRECISION);INSERT INTO metricsSELECT'2020-1-1 UTC'::timestamptz + make_interval(hours=>foo),(5 + 5 * sin(foo / 24.0 * PI()))FROM generate_series(1,168) foo;DELETE FROM metrics WHERE date BETWEEN '2020-1-4 UTC' AND '2020-1-5 UTC';SELECT time, valueFROM unnest((SELECT toolkit_experimental.gp_lttb(date, reading, 8)FROM metrics))
time | value-----------------------+-------------------2020-01-01 01:00:00+00 | 5.6526309611002572020-01-02 12:00:00+00 | 02020-01-03 23:00:00+00 | 5.6526309611002552020-01-05 01:00:00+00 | 5.6526309611002592020-01-05 13:00:00+00 | 9.9572243068690512020-01-06 12:00:00+00 | 02020-01-07 10:00:00+00 | 9.829629131445342020-01-08 00:00:00+00 | 5.000000000000004
lttb(ts TIMESTAMPTZ,value DOUBLE PRECISION,resolution INT) RETURNS Timevector
使用 最大三角形三桶算法降采样您的数据。此算法尝试保持降采样数据和原始数据集之间的视觉相似性。
必需参数
名称 | 类型 | 描述 |
---|---|---|
ts | TIMESTAMPTZ | 每个数据点的时间戳 |
value | DOUBLE PRECISION | 每个时间戳的值 |
resolution | INT | 要返回的近似点数。决定结果图表的水平分辨率。 |
返回值
列 | 类型 | 描述 |
---|---|---|
lttb | Timevector | 一个对象,表示从开始时间起按设定间隔发生的一系列值。可以使用 unnest 解包。有关更多信息,请参阅关于 timevectors 的文档。 |
示例
此示例使用一个包含原始数据的表,这些原始数据生成为正弦波。您可以使用 LTTB 显着减少点数,同时仍然捕获数据中的峰值和谷值
SET TIME ZONE 'UTC';CREATE TABLE metrics(date TIMESTAMPTZ, reading DOUBLE PRECISION);INSERT INTO metricsSELECT'2020-1-1 UTC'::timestamptz + make_interval(hours=>foo),(5 + 5 * sin(foo / 24.0 * PI()))FROM generate_series(1,168) foo;SELECT time, valueFROM unnest((SELECT lttb(date, reading, 8)FROM metrics))
time | value------------------------+---------------------2020-01-01 01:00:00+00 | 5.6526309611002572020-01-01 13:00:00+00 | 9.9572243068690532020-01-02 11:00:00+00 | 0.042775693130947982020-01-03 11:00:00+00 | 9.9572243068690512020-01-04 13:00:00+00 | 0.042775693130947092020-01-05 16:00:00+00 | 9.3301270189221912020-01-06 20:00:00+00 | 2.49999999999999962020-01-08 00:00:00+00 | 5.000000000000004
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面。