時系列ビュー - Amazon Timestream

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、こちらを参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

時系列ビュー

Timestream for LiveAnalytics は、データを timeseries データ型に変換するために次の関数をサポートしています。

CREATE_TIME_SERIES

CREATE_TIME_SERIES は、時系列の生の測定値 (時間値とメジャー値) すべてを取得し、時系列データ型を返す集計関数です。この関数の構文は次のとおりです。

CREATE_TIME_SERIES(time, measure_value::<data_type>)

ここで、<data_type> はメジャー値のデータ型であり、bigint、boolean、double、varchar のいずれかになります。2 つ目のパラメータを null にすることはできません。

次に示すように、metrics という名前のテーブルに保存されている EC2 インスタンスの CPU 使用率を検討します。

Time リージョン az vpc instance_id measure_name measure_value::double

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

35.0

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

38.2

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

45.3

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

cpu_utilization

54.1

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

cpu_utilization

42.5

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

cpu_utilization

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 を持つすべての系列を返します。この場合、2 つの系列があります。

リージョン az vpc instance_id cpu_utilization

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

[{time: 2019-12-04 19:00:00.000000000, measure_value::double: 35.0}, {time: 2019-12-04 19:00:01.000000000, measure_value::double: 38.2}, {time: 2019-12-04 19:00:02.000000000, measure_value::double: 45.3}]

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

[{time: 2019-12-04 19:00:00.000000000, measure_value::double: 35.1}, {time: 2019-12-04 19:00:01.000000000, measure_value::double: 38.5}, {time: 2019-12-04 19:00:02.000000000, measure_value::double: 45.7}]

UNNEST

UNNEST は、timeseries データをフラットモデルに変換できるテーブル関数です。構文は次のとおりです。

UNNESTtimeseries を 2 つの列、つまり timevalue に変換します。次に示すように、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 の使用を示しています。UNNEST のエイリアスを使用しない同じクエリの例を次に示します。

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