要获得与亚马逊 Timestream 类似的功能 LiveAnalytics,可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
计划查询的数据模型映射
适用于 LiveAnalytics 的 Timestream 支持对其表中的数据进行灵活建模,这种灵活性同样适用于实现到另一个适用于 LiveAnalytics 的 Timestream 表中计划查询的结果。通过计划查询,您可以查询任何表,无论其数据采用多度量记录还是单度量记录格式,并可使用多度量记录或单度量记录写入查询结果。
在计划查询的规范中使用 TargetConfiguration 将查询结果映射到目标派生表中的相应列。以下各部分介绍指定此 TargetConfiguration 的不同方式,以在派生表中实现不同的数据模型。具体而言,您将发现:
-
当查询结果不包含度量名称且在 TargetConfiguration 中指定目标度量名称时,如何写入多度量记录。
-
如何在查询结果中使用度量名称写入多度量记录。
-
如何定义模型以写入具有不同多度量属性的多个记录。
-
如何定义模型以向派生表中的单度量记录写入数据。
-
如何在计划查询中查询单度量记录和/或多度量记录,并将结果具体化为单度量记录或多度量记录,从而实现数据模型的灵活选择。
示例:多度量记录的目标度量名称
在此示例中,您将看到查询从包含多度量数据的表中读取数据,并将结果写入另一个使用多度量记录的表中。计划查询结果不包含自然度量名称列。在此处,您需通过 TargetConfiguration.TimestreamConfiguration 中的 TargetMultiMeasureName 属性,在派生表中指定度量名称。
{ "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" } } }
本示例中的映射创建一条多度量记录,其度量名称为 dashboard-metrics,属性名称包括: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,将查询输出列重命名为用于结果具体化的不同属性名称。
以下是该计划查询实现后目标表的架构。根据结果中适用于 LiveAnalytics 的 Timestream 属性类型,您可以发现,结果具体化为包含单度量名称 dashboard-metrics 的多度量记录,具体如度量架构所示。
| 列 | 类型 | 适用于 LiveAnalytics 的 Timestream 属性类型 |
|---|---|---|
|
区域 |
varchar |
维度 |
|
measure_name |
varchar |
MEASURE_NAME |
|
时间 |
timestamp |
TIMESTAMP |
|
CpuSystemP100 |
double |
MULTI |
|
avgMemCached |
double |
MULTI |
|
min_cpu_idle_1h |
double |
MULTI |
|
avg_disk_free_1h |
double |
MULTI |
|
avg_disk_used_1h |
double |
MULTI |
|
totalDiskWrites |
double |
MULTI |
|
max_mem_used_1h |
double |
MULTI |
|
min_mem_free_1h |
double |
MULTI |
|
CpuUserP100 |
double |
MULTI |
以下是使用 SHOW MEASURES 查询获得的相应度量。
| measure_name | data_type | 维度 |
|---|---|---|
|
dashboard-metrics |
多 |
[{'dimension_name': 'region', 'data_type': 'varchar'}] |
示例:在多度量记录中使用计划查询中的度量名称
在此示例中,您将看到查询从包含单度量记录的表中读取数据,并将结果具体化为多度量记录。在此情况下,调度查询结果包含一列,其值可用作目标表中的度量名称,该目标表是计划查询结果的具体化存储位置。然后,您需通过 TargetConfiguration.TimestreamConfiguration 中的 MeasureNameColumn 属性,为派生表中的多度量记录指定度量名称。
{ "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。
以下是该计划查询实现后目标表的架构。根据结果中适用于 LiveAnalytics 的 Timestream 属性类型,您可以发现,结果具体化为多度量记录。如果您查看度量架构,可发现共摄取九个不同的度量名称,这些名称与查询结果中显示的值相对应。
| 列 | 类型 | 适用于 LiveAnalytics 的 Timestream 属性类型 |
|---|---|---|
|
区域 |
varchar |
维度 |
|
measure_name |
varchar |
MEASURE_NAME |
|
时间 |
timestamp |
TIMESTAMP |
|
sum_1h |
double |
MULTI |
|
p100_1h |
double |
MULTI |
|
p0_1h |
double |
MULTI |
|
avg_1h |
double |
MULTI |
以下是使用 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'}] |
示例:将结果映射到具有不同属性的不同多度量记录
以下示例说明如何将查询结果中的不同列映射到具有不同度量名称的不同多度量记录。如果查看以下计划查询定义,则查询结果包含以下各列:region、hour、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 的多度量记录;最后,max_cpu_user_1h、max_cpu_system_1h、min_cpu_system_1h 用于另一个名为 cpu_aggregates 的多度量记录。
在这些映射中,您还可以选择使用 TargetMultiMeasureAttributeName 将查询结果列重命名为目标表中的不同属性名称。例如,结果列 avg_mem_cached_1h 重命名为 avgMemCached,total_disk_io_writes_1h 重命名为 totalIOWrites 等等。
在定义多度量记录的映射时,适用于 LiveAnalytics 的 Timestream 会检查查询结果中的每行数据,并自动忽略包含 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" } } }
以下是该计划查询实现后目标表的架构。
| 列 | 类型 | 适用于 LiveAnalytics 的 Timestream 属性类型 |
|---|---|---|
|
区域 |
varchar |
维度 |
|
measure_name |
varchar |
MEASURE_NAME |
|
时间 |
timestamp |
TIMESTAMP |
|
minCpuIdle |
double |
MULTI |
|
max_cpu_system_1h |
double |
MULTI |
|
max_cpu_user_1h |
double |
MULTI |
|
avgMemCached |
double |
MULTI |
|
maxMemUsed |
double |
MULTI |
|
min_mem_free_1h |
double |
MULTI |
|
avg_disk_free_1h |
double |
MULTI |
|
avg_disk_used_1h |
double |
MULTI |
|
totalIOWrites |
double |
MULTI |
以下是使用 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 属性,以指定查询结果列与目标表中标量度量的映射关系。
在以下示例定义中,查询结果应包含九个不同的 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" } } }
以下是该计划查询实现后目标表的架构。从架构中可以看出,该表使用单度量记录。如果列出表的度量架构,您将看到根据规范中所提供映射写入的九个度量。
| 列 | 类型 | 适用于 LiveAnalytics 的 Timestream 属性类型 |
|---|---|---|
|
区域 |
varchar |
维度 |
|
measure_name |
varchar |
MEASURE_NAME |
|
时间 |
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 属性指定此映射。在以下示例中,您会看到查询结果包含九列。您可以将结果列用作度量名称,并将值用作单度量值。
例如,对于查询结果的给定行,列名 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 存在。
| 列 | 类型 | 适用于 LiveAnalytics 的 Timestream 属性类型 |
|---|---|---|
|
区域 |
varchar |
维度 |
|
measure_name |
varchar |
MEASURE_NAME |
|
时间 |
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'}] |