如需與 Amazon Timestream for LiveAnalytics 類似的功能,請考慮使用 Amazon Timestream for InfluxDB。它提供簡化的資料擷取和單一位數毫秒查詢回應時間,以進行即時分析。在這裡進一步了解。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
排程查詢的資料模型映射
Timestream for LiveAnalytics 支援其資料表中資料的彈性建模,此相同的彈性適用於具體化至另一個 Timestream for LiveAnalytics 資料表的排程查詢結果。透過排程查詢,您可以查詢任何資料表,無論其在多度量記錄或單一度量記錄中具有資料,並使用多度量或單一度量記錄寫入查詢結果。
您可以在排程查詢的規格中使用 TargetConfiguration,將查詢結果映射至目的地衍生資料表中的適當資料欄。下列各節說明指定此 TargetConfiguration 在衍生資料表中實現不同資料模型的不同方式。具體而言,您會看到:
-
當查詢結果沒有度量名稱,且您在 TargetConfiguration 中指定目標度量名稱時,如何寫入多度量記錄。
-
如何在查詢結果中使用度量名稱來寫入多度量記錄。
-
如何定義模型以寫入具有不同多度量屬性的多個記錄。
-
如何定義模型以寫入衍生資料表中的單一度量記錄。
-
如何在排程查詢中查詢單一測量記錄和/或多測量記錄,並將結果具體化為單一測量記錄或多測量記錄,這可讓您選擇資料模型的彈性。
範例:多度量記錄的目標度量名稱
在此範例中,您會看到查詢正在從具有多度量資料的資料表讀取資料,並使用多度量記錄將結果寫入另一個資料表。排程查詢結果沒有自然量值名稱資料欄。在這裡,您可以使用 TargetConfiguration.TimestreamConfiguration 中的 TargetMultiMeasureName TargetConfiguration.TimestreamConfiguration.
{ "Name" : "CustomMultiMeasureName", "QueryString" : "SELECT region, bin(time, 1h) as hour, AVG(memory_cached) as avg_mem_cached_1h, MIN(memory_free) as min_mem_free_1h, MAX(memory_used) as max_mem_used_1h, SUM(disk_io_writes) as sum_1h, AVG(disk_used) as avg_disk_used_1h, AVG(disk_free) as avg_disk_free_1h, MAX(cpu_user) as max_cpu_user_1h, MIN(cpu_idle) as min_cpu_idle_1h, MAX(cpu_system) as max_cpu_system_1h FROM raw_data.devops_multi WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name = 'metrics' GROUP BY region, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_1", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MultiMeasureMappings" : { "TargetMultiMeasureName": "dashboard-metrics", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "avg_mem_cached_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "avgMemCached" }, { "SourceColumn" : "min_mem_free_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_mem_used_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "sum_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "totalDiskWrites" }, { "SourceColumn" : "avg_disk_used_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "avg_disk_free_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_cpu_user_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "CpuUserP100" }, { "SourceColumn" : "min_cpu_idle_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_cpu_system_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName" : "CpuSystemP100" } ] } } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
此範例中的映射會使用度量名稱儀表板指標和屬性名稱 avgMemCached、min_mem_free_1h、max_mem_used_1h、 totalDiskWrites、avg_disk_used_1h、avg_disk_free_1h、CpuUserP100、min_cpu_idle_1h、CpuSystemP100。請注意,您可以選擇是否使用 TargetMultiMeasureAttributeName 將查詢輸出資料欄重新命名為用於結果具體化的不同屬性名稱。
以下是完成此排程查詢後,目的地資料表的結構描述。如以下結果中 Timestream for LiveAnalytics 屬性類型所示,結果會以單一度量名稱 具體化為多度量記錄dashboard-metrics,如度量結構描述所示。
| 資料行 | Type | LiveAnalytics 屬性類型的 Timestream |
|---|---|---|
|
region |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
time |
timestamp |
TIMESTAMP |
|
CpuSystemP100 |
double |
多個 |
|
avgMemCached |
double |
多個 |
|
min_cpu_idle_1h |
double |
多個 |
|
avg_disk_free_1h |
double |
多個 |
|
avg_disk_used_1h |
double |
多個 |
|
totalDiskWrites |
double |
多個 |
|
max_mem_used_1h |
double |
多個 |
|
min_mem_free_1h |
double |
多個 |
|
CpuUserP100 |
double |
多個 |
以下是使用 SHOW MEAsureS 查詢取得的對應量值。
| measure_name | data_type | 維度 |
|---|---|---|
|
儀表板指標 |
多重 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
範例:在多度量記錄中使用來自排程查詢的度量名稱
在此範例中,您會看到從具有單一度量記錄的資料表讀取查詢,並將結果具體化為多度量記錄。在此情況下,排程查詢結果具有一個資料欄,其值可以用作目標資料表中的度量名稱,其中會具體化排程查詢的結果。然後,您可以使用 TargetConfiguration.TimestreamConfiguration 中的 MeasureNameColumn 屬性,在衍生資料表中指定多度量記錄的度量名稱。 TargetConfiguration.TimestreamConfiguration.
{ "Name" : "UsingMeasureNameFromQueryResult", "QueryString" : "SELECT region, bin(time, 1h) as hour, measure_name, AVG(CASE WHEN measure_name IN ('memory_cached', 'disk_used', 'disk_free') THEN measure_value::double ELSE NULL END) as avg_1h, MIN(CASE WHEN measure_name IN ('memory_free', 'cpu_idle') THEN measure_value::double ELSE NULL END) as min_1h, SUM(CASE WHEN measure_name IN ('disk_io_writes') THEN measure_value::double ELSE NULL END) as sum_1h, MAX(CASE WHEN measure_name IN ('memory_used', 'cpu_user', 'cpu_system') THEN measure_value::double ELSE NULL END) as max_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_free', 'memory_used', 'memory_cached', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, measure_name, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_2", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MeasureNameColumn" : "measure_name", "MultiMeasureMappings" : { "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "avg_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "min_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "p0_1h" }, { "SourceColumn" : "sum_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "p100_1h" } ] } } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
此範例中的映射將建立屬性為 avg_1h、p0_1h、 sum_1h、p100_1h 的多度量記錄,並將使用查詢結果中 measure_name 欄的值作為目的地資料表中多度量記錄的度量名稱。此外請注意,上述範例可選擇使用 TargetMultiMeasureAttributeName 搭配映射子集來重新命名屬性。例如,min_1h 重新命名為 p0_1h,Max_1h 重新命名為 p100_1h。
以下是完成此排程查詢後,目的地資料表的結構描述。如以下結果中 Timestream for LiveAnalytics 屬性類型所示,結果會具體化為多度量記錄。如果您查看度量結構描述,則會擷取九個不同的度量名稱,對應於查詢結果中看到的值。
| 資料行 | Type | LiveAnalytics 屬性類型的 Timestream |
|---|---|---|
|
region |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
time |
timestamp |
TIMESTAMP |
|
sum_1h |
double |
多個 |
|
p100_1h |
double |
多個 |
|
p0_1h |
double |
多個 |
|
avg_1h |
double |
多個 |
以下是使用 SHOW MEAsureS 查詢取得的對應量值。
| measure_name | data_type | 維度 |
|---|---|---|
|
cpu_idle |
多重 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
cpu_system |
多重 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
cpu_user |
多重 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
disk_free |
多重 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
disk_io_writes |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
disk_used |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
memory_cached |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
memory_free |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
memory_free |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
範例:將結果映射到具有不同屬性的不同多度量記錄
下列範例示範如何將查詢結果中的不同資料欄映射到具有不同度量名稱的不同多度量記錄。如果您看到下列排程查詢定義,查詢的結果具有下列資料欄:區域、小時、avg_mem_cached_1h、min_mem_free_1h、max_mem_used_1h、 total_disk_io_writes_1h、avg_disk_used_1h、avg_disk_free_1h、max_cpu_user_1h、max_cpu_system_1h、min_cpu_system_1h。 region 會映射至維度,並hour映射至時間資料欄。
TargetConfiguration.TimestreamConfiguration 中的 MixedMeasureMappings 屬性會指定如何將度量對應至衍生資料表中的多度量記錄。
在此特定範例中,avg_mem_cached_1h、min_mem_free_1h、max_mem_used_1h 用於一個測量名稱為 mem_aggregates、 total_disk_io_writes_1h、avg_disk_used_1h、avg_disk_free_1h 用於另一個測量名稱為 disk_aggregates 的多測量記錄中,最後在另一個測量名稱為 cpu_user_1h、max_cpu_system_1h、min_cpu_system_1h 的多測量記錄中使用。
在這些映射中,您也可以選擇性地使用 TargetMultiMeasureAttributeName 來重新命名查詢結果欄,以在目的地資料表中具有不同的屬性名稱。例如,將結果欄 avg_mem_cached_1h 重新命名為 avgMemCached,將 total_disk_io_writes_1h 重新命名為 totalIOWrites 等。
當您定義多度量記錄的映射時,Timestream for LiveAnalytics 會檢查查詢結果中的每一列,並自動忽略具有 NULL 值的資料欄值。因此,如果映射具有多個量值名稱,如果映射中該群組的所有資料欄值為指定資料列的 NULL,則該量值名稱的值不會擷取該資料列。
例如,在以下映射中,avg_mem_cached_1h、min_mem_free_1h 和 max_mem_used_1h 會映射以測量名稱 mem_aggregates。如果對於指定的查詢結果資料列,所有這些資料欄值都是 NULL,則 LiveAnalytics 的 Timestream 不會擷取該資料列的 Mem_aggregates 量值。如果指定資料列的所有九個資料欄都是 NULL,則您會在錯誤報告中看到報告的使用者錯誤。
{ "Name" : "AggsInDifferentMultiMeasureRecords", "QueryString" : "SELECT region, bin(time, 1h) as hour, AVG(CASE WHEN measure_name = 'memory_cached' THEN measure_value::double ELSE NULL END) as avg_mem_cached_1h, MIN(CASE WHEN measure_name = 'memory_free' THEN measure_value::double ELSE NULL END) as min_mem_free_1h, MAX(CASE WHEN measure_name = 'memory_used' THEN measure_value::double ELSE NULL END) as max_mem_used_1h, SUM(CASE WHEN measure_name = 'disk_io_writes' THEN measure_value::double ELSE NULL END) as total_disk_io_writes_1h, AVG(CASE WHEN measure_name = 'disk_used' THEN measure_value::double ELSE NULL END) as avg_disk_used_1h, AVG(CASE WHEN measure_name = 'disk_free' THEN measure_value::double ELSE NULL END) as avg_disk_free_1h, MAX(CASE WHEN measure_name = 'cpu_user' THEN measure_value::double ELSE NULL END) as max_cpu_user_1h, MAX(CASE WHEN measure_name = 'cpu_system' THEN measure_value::double ELSE NULL END) as max_cpu_system_1h, MIN(CASE WHEN measure_name = 'cpu_idle' THEN measure_value::double ELSE NULL END) as min_cpu_system_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_cached', 'memory_free', 'memory_used', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_3", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MixedMeasureMappings" : [ { "MeasureValueType" : "MULTI", "TargetMeasureName" : "mem_aggregates", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "avg_mem_cached_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "avgMemCached" }, { "SourceColumn" : "min_mem_free_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_mem_used_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "maxMemUsed" } ] }, { "MeasureValueType" : "MULTI", "TargetMeasureName" : "disk_aggregates", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "total_disk_io_writes_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "totalIOWrites" }, { "SourceColumn" : "avg_disk_used_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "avg_disk_free_1h", "MeasureValueType" : "DOUBLE" } ] }, { "MeasureValueType" : "MULTI", "TargetMeasureName" : "cpu_aggregates", "MultiMeasureAttributeMappings" : [ { "SourceColumn" : "max_cpu_user_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "max_cpu_system_1h", "MeasureValueType" : "DOUBLE" }, { "SourceColumn" : "min_cpu_idle_1h", "MeasureValueType" : "DOUBLE", "TargetMultiMeasureAttributeName": "minCpuIdle" } ] } ] } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
以下是完成此排程查詢後,目的地資料表的結構描述。
| 資料行 | Type | LiveAnalytics 屬性類型的 Timestream |
|---|---|---|
|
region |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
time |
timestamp |
TIMESTAMP |
|
minCpuIdle |
double |
多個 |
|
max_cpu_system_1h |
double |
多個 |
|
max_cpu_user_1h |
double |
多個 |
|
avgMemCached |
double |
多個 |
|
maxMemUsed |
double |
多個 |
|
min_mem_free_1h |
double |
多個 |
|
avg_disk_free_1h |
double |
多個 |
|
avg_disk_used_1h |
double |
多個 |
|
totalIOWrites |
double |
多個 |
以下是使用 SHOW MEAsureS 查詢取得的對應量值。
| measure_name | data_type | 維度 |
|---|---|---|
|
cpu_aggregates |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
disk_aggregates |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
mem_aggregates |
多 |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
範例:使用查詢結果中的度量名稱,將結果映射至單一度量記錄
以下是排程查詢的範例,其結果會具體化為單一度量記錄。在此範例中,查詢結果具有 measure_name 資料欄,其值將用作目標資料表中的度量名稱。您可以使用 TargetConfiguration.TimestreamConfiguration 中的 MixedMeasureMappings 屬性,指定查詢結果欄與目標資料表中純量量值的映射。 TargetConfiguration.TimestreamConfiguration
在下列範例定義中,查詢結果預期為九個不同的 measure_name 值。您可以在映射中列出所有這些度量名稱,並指定要用於該度量名稱之單一度量值的資料欄。例如,在此映射中,如果在給定的結果列中看到 memory_cached 的量值名稱,則 avg_1h 欄中的值會用作將資料寫入目標資料表時的量值。您可以選擇性地使用 TargetMeasureName,為此值提供新的度量名稱。
{ "Name" : "UsingMeasureNameColumnForSingleMeasureMapping", "QueryString" : "SELECT region, bin(time, 1h) as hour, measure_name, AVG(CASE WHEN measure_name IN ('memory_cached', 'disk_used', 'disk_free') THEN measure_value::double ELSE NULL END) as avg_1h, MIN(CASE WHEN measure_name IN ('memory_free', 'cpu_idle') THEN measure_value::double ELSE NULL END) as min_1h, SUM(CASE WHEN measure_name IN ('disk_io_writes') THEN measure_value::double ELSE NULL END) as sum_1h, MAX(CASE WHEN measure_name IN ('memory_used', 'cpu_user', 'cpu_system') THEN measure_value::double ELSE NULL END) as max_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_free', 'memory_used', 'memory_cached', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, bin(time, 1h), measure_name", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_4", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MeasureNameColumn" : "measure_name", "MixedMeasureMappings" : [ { "MeasureName" : "memory_cached", "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_1h", "TargetMeasureName" : "AvgMemCached" }, { "MeasureName" : "disk_used", "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_1h" }, { "MeasureName" : "disk_free", "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_1h" }, { "MeasureName" : "memory_free", "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_1h", "TargetMeasureName" : "MinMemFree" }, { "MeasureName" : "cpu_idle", "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_1h" }, { "MeasureName" : "disk_io_writes", "MeasureValueType" : "DOUBLE", "SourceColumn" : "sum_1h", "TargetMeasureName" : "total-disk-io-writes" }, { "MeasureName" : "memory_used", "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_1h", "TargetMeasureName" : "maxMemUsed" }, { "MeasureName" : "cpu_user", "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_1h" }, { "MeasureName" : "cpu_system", "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_1h" } ] } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
以下是完成此排程查詢後,目的地資料表的結構描述。您可以從結構描述中看到,資料表使用單一度量記錄。如果您列出資料表的量值結構描述,您會看到根據規格中提供的映射寫入 的九個量值。
| 資料行 | Type | LiveAnalytics 屬性類型的 Timestream |
|---|---|---|
|
region |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
time |
timestamp |
TIMESTAMP |
|
measure_value::double |
double |
MEASURE_VALUE |
以下是使用 SHOW MEAsureS 查詢取得的對應量值。
| measure_name | data_type | 維度 |
|---|---|---|
|
AvgMemCached |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
MinMemFree |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
cpu_idle |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
cpu_system |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
cpu_user |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
disk_free |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
disk_used |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
maxMemUsed |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
total-disk-io-writes |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
範例:將結果映射至具有查詢結果資料欄作為度量名稱的單一度量記錄
在此範例中,您有一個查詢,其結果沒有度量名稱資料欄。反之,在將輸出映射至單一度量記錄時,您希望查詢結果資料欄名稱做為度量名稱。先前有一個範例將類似的結果寫入多度量記錄。在此範例中,您將看到如何將其映射到符合應用程式案例的單一度量記錄。
同樣地,您可以使用 TargetConfiguration.TimestreamConfiguration 中的 MixedMeasureMappings 屬性來指定此映射。 TargetConfiguration.TimestreamConfiguration. 在下列範例中,您會看到查詢結果有九個資料欄。您可以使用結果欄做為度量名稱,並將值做為單一度量值。
例如,對於查詢結果中的指定資料列,資料欄名稱 avg_mem_cached_1h 用作與資料欄相關聯的資料欄名稱和值,而 avg_mem_cached_1h 用作單一度量記錄的度量值。您也可以使用 TargetMeasureName,在目標資料表中使用不同的度量名稱。例如,對於資料欄 sum_1h 中的值,映射指定使用 total_disk_io_writes_1h 作為目標資料表中的度量名稱。如果任何資料欄的值為 NULL,則會忽略對應的量值。
{ "Name" : "SingleMeasureMappingWithoutMeasureNameColumnInQueryResult", "QueryString" : "SELECT region, bin(time, 1h) as hour, AVG(CASE WHEN measure_name = 'memory_cached' THEN measure_value::double ELSE NULL END) as avg_mem_cached_1h, AVG(CASE WHEN measure_name = 'disk_used' THEN measure_value::double ELSE NULL END) as avg_disk_used_1h, AVG(CASE WHEN measure_name = 'disk_free' THEN measure_value::double ELSE NULL END) as avg_disk_free_1h, MIN(CASE WHEN measure_name = 'memory_free' THEN measure_value::double ELSE NULL END) as min_mem_free_1h, MIN(CASE WHEN measure_name = 'cpu_idle' THEN measure_value::double ELSE NULL END) as min_cpu_idle_1h, SUM(CASE WHEN measure_name = 'disk_io_writes' THEN measure_value::double ELSE NULL END) as sum_1h, MAX(CASE WHEN measure_name = 'memory_used' THEN measure_value::double ELSE NULL END) as max_mem_used_1h, MAX(CASE WHEN measure_name = 'cpu_user' THEN measure_value::double ELSE NULL END) as max_cpu_user_1h, MAX(CASE WHEN measure_name = 'cpu_system' THEN measure_value::double ELSE NULL END) as max_cpu_system_1h FROM raw_data.devops WHERE time BETWEEN bin(@scheduled_runtime, 1h) - 14h AND bin(@scheduled_runtime, 1h) - 2h AND measure_name IN ('memory_free', 'memory_used', 'memory_cached', 'disk_io_writes', 'disk_used', 'disk_free', 'cpu_user', 'cpu_system', 'cpu_idle') GROUP BY region, bin(time, 1h)", "ScheduleConfiguration" : { "ScheduleExpression" : "cron(0 0/1 * * ? *)" }, "NotificationConfiguration" : { "SnsConfiguration" : { "TopicArn" : "******" } }, "ScheduledQueryExecutionRoleArn": "******", "TargetConfiguration": { "TimestreamConfiguration": { "DatabaseName" : "derived", "TableName" : "dashboard_metrics_1h_agg_5", "TimeColumn" : "hour", "DimensionMappings" : [ { "Name": "region", "DimensionValueType" : "VARCHAR" } ], "MixedMeasureMappings" : [ { "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_mem_cached_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_disk_used_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "avg_disk_free_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_mem_free_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "min_cpu_idle_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "sum_1h", "TargetMeasureName" : "total_disk_io_writes_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_mem_used_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_cpu_user_1h" }, { "MeasureValueType" : "DOUBLE", "SourceColumn" : "max_cpu_system_1h" } ] } }, "ErrorReportConfiguration": { "S3Configuration" : { "BucketName" : "******", "ObjectKeyPrefix": "errors", "EncryptionOption": "SSE_S3" } } }
以下是完成此排程查詢後,目的地資料表的結構描述。如您所見,目標資料表正在儲存類型為雙的單一度量值記錄。同樣地,資料表的量值結構描述會顯示九個量值名稱。另請注意,由於映射將 sum_1h 重新命名為 total_disk_io_writes_1h,因此存在度量名稱 total_disk_io_writes_1h。
| 資料行 | Type | LiveAnalytics 屬性類型的 Timestream |
|---|---|---|
|
region |
varchar |
DIMENSION |
|
measure_name |
varchar |
MEASURE_NAME |
|
time |
timestamp |
TIMESTAMP |
|
measure_value::double |
double |
MEASURE_VALUE |
以下是使用 SHOW MEAsureS 查詢取得的對應量值。
| measure_name | data_type | 維度 |
|---|---|---|
|
avg_disk_free_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
avg_disk_used_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
avg_mem_cached_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
max_cpu_system_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
max_cpu_user_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
max_mem_used_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
min_cpu_idle_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
min_mem_free_1h |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |
|
total-disk-io-writes |
double |
【{'dimension_name': 'region', 'data_type': 'varchar'}】 |