

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.amazonaws.cn//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

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

# 计划查询的数据模型映射
<a name="scheduledqueries-mappings"></a>

Timestream for LiveAnalytics 支持对其表中的数据进行灵活建模，同样的灵活性也适用于在表格的另一个 Timestream 中实现的定时查询的结果。 LiveAnalytics 通过计划查询，您可以查询任何表，无论其数据采用多度量记录还是单度量记录格式，并可使用多度量记录或单度量记录写入查询结果。

您可以在定时查询的规范 TargetConfiguration 中使用将查询结果映射到目标派生表中的相应列。以下各节描述了指定此值 TargetConfiguration 以在派生表中实现不同数据模型的不同方法。具体而言，您将发现：
+ 当查询结果没有度量名称并且您在中指定了目标度量名称时，如何写入多度量记录。 TargetConfiguration
+ 如何在查询结果中使用度量名称写入多度量记录。
+ 如何定义模型以写入具有不同多度量属性的多个记录。
+ 如何定义模型以向派生表中的单度量记录写入数据。
+ 如何在计划查询中查询单度 and/or 量记录多度量记录并将结果具体化为单度量记录或多度量记录，这使您可以灵活选择数据模型的灵活性。

## 示例：多度量记录的目标度量名称
<a name="scheduledqueries-mappings-targetmeasurename"></a>

在此示例中，您将看到查询从包含多度量数据的表中读取数据，并将结果写入另一个使用多度量记录的表中。计划查询结果不包含自然度量名称列。在这里，您可以使用中的 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"
        }
    }
}
```

本示例中的映射创建了一条包含度量名称仪表板指标和属性名称的多度量记录，min\$1mem\$1free\$11h、max\$1mem\$1used\$11h、、avg\$1disk\$1used\$11h avgMemCached、avg\$1disk\$1free\$11h、P100、min\$1cpu\$1idle\$11h、P100。 totalDiskWrites CpuUser CpuSystem请注意，可以选择使用 TargetMultiMeasureAttributeName 将查询输出列重命名为用于结果实现的不同属性名称。

以下是该计划查询实现后目标表的架构。如以下结果中 LiveAnalytics 属性类型的 Timestream 所示，结果将具体化为具有单度量名称的多度量记录`dashboard-metrics`，如度量架构所示。


| 列 | Type |  LiveAnalytics 属性类型的时间流 | 
| --- | --- | --- | 
|  region  |  varchar  |  维度  | 
|  measure\$1name  |  varchar  |  MEASURE\$1NAME  | 
|  时间  |  timestamp  |  TIMESTAMP  | 
|  CpuSystemP100  |  double  |  MULTI  | 
|  avgMemCached  |  double  |  MULTI  | 
|  min\$1cpu\$1idle\$11h  |  double  |  MULTI  | 
|  avg\$1disk\$1free\$11h  |  double  |  MULTI  | 
|  avg\$1disk\$1used\$11h  |  double  |  MULTI  | 
|  totalDiskWrites  |  double  |  MULTI  | 
|  max\$1mem\$1used\$11h  |  double  |  MULTI  | 
|  min\$1mem\$1free\$11h  |  double  |  MULTI  | 
|  CpuUserP100  |  double  |  MULTI  | 

以下是使用 SHOW MEASURES 查询获得的相应度量。


| measure\$1name | data\$1type | Dimensions | 
| --- | --- | --- | 
|  dashboard-metrics  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 

## 示例：在多度量记录中使用计划查询中的度量名称
<a name="scheduledqueries-mappings-usingmeasurename"></a>

在此示例中，您将看到查询从包含单度量记录的表中读取数据，并将结果具体化为多度量记录。在此情况下，调度查询结果包含一列，其值可用作目标表中的度量名称，该目标表是计划查询结果的具体化存储位置。然后，您可以使用中的 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\$11h、p0\$11h、sum\$11h、p100\$11h 的多度量记录，并使用查询结果中 measure\$1name 列的值作为目标表中多度量记录的度量名称。此外，请注意，前面的示例可以选择使用 TargetMultiMeasureAttributeName 带有映射子集的来重命名属性。例如，min\$11h 已重命名为 p0\$11h，而 max\$11h 已重命名为 p100\$11h。

以下是该计划查询实现后目标表的架构。正如您在以下结果中从 LiveAnalytics 属性类型的时间流中看到的那样，结果被具体化为多度量记录。如果您查看度量架构，可发现共摄取九个不同的度量名称，这些名称与查询结果中显示的值相对应。


| 列 | Type |  LiveAnalytics 属性类型的时间流 | 
| --- | --- | --- | 
|  region  |  varchar  |  维度  | 
|  measure\$1name  |  varchar  |  MEASURE\$1NAME  | 
|  时间  |  timestamp  |  TIMESTAMP  | 
|  sum\$11h  |  double  |  MULTI  | 
|  p100\$11h  |  double  |  MULTI  | 
|  p0\$11h  |  double  |  MULTI  | 
|  avg\$11h  |  double  |  MULTI  | 

以下是使用 SHOW MEASURES 查询获得的相应度量。


| measure\$1name | data\$1type | Dimensions | 
| --- | --- | --- | 
|  cpu\$1idle  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  cpu\$1system  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  cpu\$1user  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  disk\$1free  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  disk\$1io\$1writes  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  disk\$1used  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  memory\$1cached  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  memory\$1free  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  memory\$1free  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 

## 示例：将结果映射到具有不同属性的不同多度量记录
<a name="scheduledqueries-mappings-mappintresultstodiffrentmultimeasure"></a>

以下示例说明如何将查询结果中的不同列映射到具有不同度量名称的不同多度量记录。如果查看以下计划查询定义，则查询结果包含以下各列：region、hour、avg\$1mem\$1cached\$11h、min\$1mem\$1free\$11h、max\$1mem\$1used\$11h、total\$1disk\$1io\$1writes\$11h、avg\$1disk\$1used\$11h、avg\$1disk\$1free\$11h、max\$1cpu\$1user\$11h、max\$1cpu\$1system\$11h、min\$1cpu\$1system\$11h。`region` 映射到维度，而 `hour` 映射到时间列。

中的 MixedMeasureMappings 房产 TargetConfiguration。 TimestreamConfiguration指定如何将度量映射到派生表中的多度量记录。

在此具体示例中，avg\$1mem\$1cached\$11h、min\$1mem\$1free\$11h、max\$1mem\$1used\$11h 用于名为 mem\$1aggregates 的多度量记录；total\$1disk\$1io\$1writes\$11h、avg\$1disk\$1used\$11h、avg\$1disk\$1free\$11h 用于另一个名为 disk\$1aggregates 的多度量记录；最后，max\$1cpu\$1user\$11h、max\$1cpu\$1system\$11h、min\$1cpu\$1system\$11h 用于另一个名为 cpu\$1aggregates 的多度量记录。

在这些映射中，您还可以选择使用 TargetMultiMeasureAttributeName 重命名查询结果列，使其在目标表中使用不同的属性名称。例如，结果列 avg\$1mem\$1cached\$11h 被重命名为，total\$1disk\$1io\$1writes\$11h 被重命名为 total， avgMemCached等等。IOWrites

在为多度量记录定义映射时， LiveAnalytics Timestream for 会检查查询结果中的每一行，并自动忽略具有 NULL 值的列值。因此，对于包含多个度量名称的映射，如果映射中该组的所有列值对于给定行均为 NULL，则该行不会为该度量名称摄取任何值。

例如，在以下映射中，avg\$1mem\$1cached\$11h、min\$1mem\$1free\$11h 和 max\$1mem\$1used\$11h 被映射到度量名称 mem\$1aggregates。如果对于查询结果的给定行，所有这些列值均为 NULL，则 Timestream for 将 LiveAnalytics 不会提取该行的度量 mem\$1aggregates。如果给定行所有九列均为 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 属性类型的时间流 | 
| --- | --- | --- | 
|  region  |  varchar  |  维度  | 
|  measure\$1name  |  varchar  |  MEASURE\$1NAME  | 
|  时间  |  timestamp  |  TIMESTAMP  | 
|  minCpuIdle  |  double  |  MULTI  | 
|  max\$1cpu\$1system\$11h  |  double  |  MULTI  | 
|  max\$1cpu\$1user\$11h  |  double  |  MULTI  | 
|  avgMemCached  |  double  |  MULTI  | 
|  maxMemUsed  |  double  |  MULTI  | 
|  min\$1mem\$1free\$11h  |  double  |  MULTI  | 
|  avg\$1disk\$1free\$11h  |  double  |  MULTI  | 
|  avg\$1disk\$1used\$11h  |  double  |  MULTI  | 
|  总计 IOWrites  |  double  |  MULTI  | 

以下是使用 SHOW MEASURES 查询获得的相应度量。


| measure\$1name | data\$1type | Dimensions | 
| --- | --- | --- | 
|  cpu\$1aggregates  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  disk\$1aggregates  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  mem\$1aggregates  |  multi  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 

## 示例：将结果映射到单度量记录，并从查询结果中获取度量名称
<a name="scheduledqueries-mappings-mappintresultstosinglemeasurerecords"></a>

以下是计划查询的示例，其结果具体化为单度量记录。在此示例中，查询结果包含 measure\$1name 列，其值将用作目标表中的度量名称。您可以在中使用该 MixedMeasureMappings 属性 TargetConfiguration。 TimestreamConfiguration 指定查询结果列与目标表中标量度量的映射。

在以下示例定义中，查询结果应包含九个不同的 measure\$1name 值。在映射中列出所有这些度量名称，并指定要使用哪一列作为该度量名称的单度量值。例如，在此映射中，如果某结果行显示为 memory\$1cached 的度量名称，则在将数据写入目标表时，使用 avg\$11h 列中的值作为该度量的值。您可以选择使用 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 属性类型的时间流 | 
| --- | --- | --- | 
|  region  |  varchar  |  维度  | 
|  measure\$1name  |  varchar  |  MEASURE\$1NAME  | 
|  时间  |  timestamp  |  TIMESTAMP  | 
|  measure\$1value::double  |  double  |  MEASURE\$1VALUE  | 

以下是使用 SHOW MEASURES 查询获得的相应度量。


| measure\$1name | data\$1type | Dimensions | 
| --- | --- | --- | 
|  AvgMemCached  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  MinMemFree  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  cpu\$1idle  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  cpu\$1system  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  cpu\$1user  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  disk\$1free  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  disk\$1used  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  maxMemUsed  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  total-disk-io-writes  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 

## 示例：将查询结果映射到单度量记录，其中查询结果列作为度量名称
<a name="scheduledqueries-mappings-mappintresultstsolumnsasmeasurename"></a>

在此示例中，您有一个查询，其结果集不包含度量名称列。相反，在将输出映射到单度量记录时，您希望查询结果列名称作为度量名称。先前曾有示例，其类似的结果写入多度量记录中。在此示例中，如果这符合您的应用场景，您将了解如何将其映射到单度量记录。

同样，您可以使用中的 MixedMeasureMappings 属性指定此映射 TargetConfiguration。 TimestreamConfiguration。在以下示例中，您会看到查询结果包含九列。您可以将结果列用作度量名称，并将值用作单度量值。

例如，对于查询结果的给定行，列名 avg\$1mem\$1cached\$11h 用作与列关联的列名和值，avg\$1mem\$1cached\$11h 用作单度量记录的度量值。您也可以使用 TargetMeasureName 在目标表中使用不同的度量名称。例如，对于 sum\$11h 列中的值，映射指定使用 total\$1disk\$1io\$1writes\$11h 作为目标表中的度量名称。如果任何列的值为 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\$11h 重命名为 total\$1disk\$1io\$1writes\$11h，因此度量名称 total\$1disk\$1io\$1writes\$11h 存在。


| 列 | Type |  LiveAnalytics 属性类型的时间流 | 
| --- | --- | --- | 
|  region  |  varchar  |  维度  | 
|  measure\$1name  |  varchar  |  MEASURE\$1NAME  | 
|  时间  |  timestamp  |  TIMESTAMP  | 
|  measure\$1value::double  |  double  |  MEASURE\$1VALUE  | 

以下是使用 SHOW MEASURES 查询获得的相应度量。


| measure\$1name | data\$1type | Dimensions | 
| --- | --- | --- | 
|  avg\$1disk\$1free\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  avg\$1disk\$1used\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  avg\$1mem\$1cached\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  max\$1cpu\$1system\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  max\$1cpu\$1user\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  max\$1mem\$1used\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  min\$1cpu\$1idle\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  min\$1mem\$1free\$11h  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 
|  total-disk-io-writes  |  double  |  [\$1'dimension\$1name': 'region', 'data\$1type': 'varchar'\$1]  | 