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

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

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

时间序列视图

Timestream for LiveAnalytics 支持以下用于将数据转换为timeseries数据类型的函数:

创建时间序列

CREATE_TIME_S ERIES 是一个聚合函数,它获取时间序列的所有原始测量值(时间和度量值),并返回时间序列数据类型。此函数的语法如下:

CREATE_TIME_SERIES(time, measure_value::<data_type>)

其中,<data_type>是度量值的数据类型,可以是 bigint、boolean、double 或 varchar 之一。第二个参数不能为空。

考虑存储在名为 m etrics 的表中的 EC2 实例的 CPU 使用率,如下所示:

Time 区域 az vpc instance_id measure_name measure_value::double

2019-12-04 19:00:00.000 00000 000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

CPU_利用率

35.0

2019-12-04 19:00:01.000 000 000 000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

CPU_利用率

38.2

2019-12-04 19:00:02.000 000 000 000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

CPU_利用率

45.3

2019-12-04 19:00:00.000 00000 000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

CPU_利用率

54.1

2019-12-04 19:00:01.000 000 000 000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

CPU_利用率

42.5

2019-12-04 19:00:02.000 000 000 000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

CPU_利用率

33.7

运行查询:

SELECT region, az, vpc, instance_id, CREATE_TIME_SERIES(time, measure_value::double) as cpu_utilization FROM metrics WHERE measure_name=’cpu_utilization’ GROUP BY region, az, vpc, instance_id

将返回所有以度量值cpu_utilization为度量值的系列。在本例中,我们有两个系列:

区域 az vpc instance_id CPU_利用率

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

[{时间:2019-12-04 19:00:00.000 00000,measure_value:: double: 35.0},{时间:2019-12-04 19:00:01.000 000 000 000,measure_value:: double: 48.2},{时间:2019-12-04 19:00:02.000 000 000,measure_value:: double: 45.3}]

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

[{时间:2019-12-04 19:00:00.000 00000,measure_value:: double: 35.1},{时间:2019-12-04 19:00:01.000 000 000 000,measure_value:: 45.7},{时间:2019-12-04 19:00:02.000 000 000,measure_value:: 45.7}]

UNNEST

UNNEST是一个表格函数,可让您将timeseries数据转换为平面模型。语法如下:

UNNESTtimeseries将 a 转换为两列,即、time和。value您也可以在 UNNEST 中使用别名,如下所示:

UNNEST(timeseries) AS <alias_name> (time_alias, value_alias)

其中,<alias_name>是平面表的别名,time_aliastime列的别名,value_aliasvalue列的别名。

例如,假设您的队列中的一些 EC2 实例配置为以 5 秒的间隔发布指标,而另一些实例则以 15 秒的间隔发布指标,并且您需要在过去 6 小时内以 10 秒为粒度发布所有实例的平均指标。要获取这些数据,请使用 CREATE_TIME_ SERIES 将指标转换为时间序列模型。然后,你可以使用 INTERPOLATE_LINEAR 以 10 秒的粒度获取缺失值。接下来,使用 UNNEST 将数据转换回平面模型,然后使用 AVG 获取所有实例的平均指标。

WITH interpolated_timeseries AS ( SELECT region, az, vpc, instance_id, INTERPOLATE_LINEAR( CREATE_TIME_SERIES(time, measure_value::double), SEQUENCE(ago(6h), now(), 10s)) AS interpolated_cpu_utilization FROM timestreamdb.metrics WHERE measure_name= ‘cpu_utilization’ AND time >= ago(6h) GROUP BY region, az, vpc, instance_id ) SELECT region, az, vpc, instance_id, avg(t.cpu_util) FROM interpolated_timeseries CROSS JOIN UNNEST(interpolated_cpu_utilization) AS t (time, cpu_util) GROUP BY region, az, vpc, instance_id

上面的查询演示了如何使用带别名的 UNNEST。以下是未使用 UNNES T 别名的相同查询的示例:

WITH interpolated_timeseries AS ( SELECT region, az, vpc, instance_id, INTERPOLATE_LINEAR( CREATE_TIME_SERIES(time, measure_value::double), SEQUENCE(ago(6h), now(), 10s)) AS interpolated_cpu_utilization FROM timestreamdb.metrics WHERE measure_name= ‘cpu_utilization’ AND time >= ago(6h) GROUP BY region, az, vpc, instance_id ) SELECT region, az, vpc, instance_id, avg(value) FROM interpolated_timeseries CROSS JOIN UNNEST(interpolated_cpu_utilization) GROUP BY region, az, vpc, instance_id