插值函数 - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从2025年6月20日起,亚马逊Timestream版 LiveAnalytics 将不再向新客户开放。如果您想使用亚马逊 Timestream LiveAnalytics,请在该日期之前注册。现有客户可以继续照常使用该服务。有关更多信息,请参阅 Amazon Timestream 以了解 LiveAnalytics 可用性变更。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

插值函数

如果您的时间序列数据缺少特定时间点的事件值,则可以使用插值法估计这些缺失事件的值。Amazon Timestream 支持四种插值变体:线性插值、三次样条插值、上次观测向前移动 (locf) 插值法和恒定插值。本节提供 LiveAnalytics插值函数的 Timestream 的用法信息以及示例查询。

使用情况信息

函数 输出数据类型 描述

interpolate_linear(timeseries, array[timestamp])

时间序列

使用线性插值法填充缺失的数据。

interpolate_linear(timeseries, timestamp)

double

使用线性插值法填充缺失的数据。

interpolate_spline_cubic(timeseries, array[timestamp])

时间序列

使用三次样条插值法填充缺失的数据。

interpolate_spline_cubic(timeseries, timestamp)

double

使用三次样条插值法填充缺失的数据。

interpolate_locf(timeseries, array[timestamp])

时间序列

使用上次采样值填充缺失的数据。

interpolate_locf(timeseries, timestamp)

double

使用上次采样值填充缺失的数据。

interpolate_fill(timeseries, array[timestamp], double)

时间序列

使用常量值填充缺失的数据。

interpolate_fill(timeseries, timestamp, double)

double

使用常量值填充缺失的数据。

查询示例

找出过去 2 小时内特定 EC2 主机以 30 秒为间隔分箱的平均 CPU 利用率,使用线性插值填充缺失值:

WITH binned_timeseries AS ( SELECT hostname, BIN(time, 30s) AS binned_timestamp, ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization FROM "sampleDB".DevOps WHERE measure_name = 'cpu_utilization' AND hostname = 'host-Hovjv' AND time > ago(2h) GROUP BY hostname, BIN(time, 30s) ), interpolated_timeseries AS ( SELECT hostname, INTERPOLATE_LINEAR( CREATE_TIME_SERIES(binned_timestamp, avg_cpu_utilization), SEQUENCE(min(binned_timestamp), max(binned_timestamp), 15s)) AS interpolated_avg_cpu_utilization FROM binned_timeseries GROUP BY hostname ) SELECT time, ROUND(value, 2) AS interpolated_cpu FROM interpolated_timeseries CROSS JOIN UNNEST(interpolated_avg_cpu_utilization)

找出过去 2 小时内特定 EC2 主机以 30 秒为间隔分箱的平均 CPU 利用率,并根据上次执行的观测值使用插值填充缺失值:

WITH binned_timeseries AS ( SELECT hostname, BIN(time, 30s) AS binned_timestamp, ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization FROM "sampleDB".DevOps WHERE measure_name = 'cpu_utilization' AND hostname = 'host-Hovjv' AND time > ago(2h) GROUP BY hostname, BIN(time, 30s) ), interpolated_timeseries AS ( SELECT hostname, INTERPOLATE_LOCF( CREATE_TIME_SERIES(binned_timestamp, avg_cpu_utilization), SEQUENCE(min(binned_timestamp), max(binned_timestamp), 15s)) AS interpolated_avg_cpu_utilization FROM binned_timeseries GROUP BY hostname ) SELECT time, ROUND(value, 2) AS interpolated_cpu FROM interpolated_timeseries CROSS JOIN UNNEST(interpolated_avg_cpu_utilization)