Amazon Timestream for LiveAnalytics と同様の機能については、Amazon Timestream for InfluxDB を検討してください。リアルタイム分析のために、簡略化されたデータ取り込みと 1 桁ミリ秒のクエリ応答時間を提供します。詳細については、こちらを参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
時系列ビュー
LiveAnalytics の Timestream は、データを timeseries データ型に変換するために次の関数をサポートしています。
CREATE_TIME_SERIES
CREATE_TIME_SERIES は、時系列のすべての raw 測定値 (時刻と測定値) を取得し、時系列データ型を返す集計関数です。この関数の構文は次のとおりです。
CREATE_TIME_SERIES(time, measure_value::<data_type>)
ここで、 <data_type>はメジャー値のデータ型であり、bigint、boolean、double、varchar のいずれかになります。2 番目のパラメータを null にすることはできません。
次に示すように、メトリクスという名前のテーブルに保存されている EC2 インスタンスの CPU 使用率を考慮します。
| 時間 | region | 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 つのシリーズがあります。
| region | 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データをフラットモデルに変換できるテーブル関数です。構文は次のとおりです。
UNNEST は timeseriesを 2 つの列、つまり timeと に変換しますvalue。次に示すように、UNNEST でエイリアスを使用することもできます。
UNNEST(timeseries) AS<alias_name>(time_alias,value_alias)
ここで、 <alias_name>はフラットテーブルのエイリアス、 time_aliasはtime列のエイリアス、 value_aliasはvalue列のエイリアスです。
たとえば、フリート内の 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