

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、[こちら](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)を参照してください。

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

# スケジュールされたクエリのデータモデルマッピング
<a name="scheduledqueries-mappings"></a>

Timestream for LiveAnalytics は、テーブル内のデータの柔軟なモデリングをサポートしており、別の Timestream for LiveAnalytics テーブルにマテリアライズされたスケジュールされたクエリの結果も、同じように柔軟に処理できます。スケジュールされたクエリでは、マルチメジャーレコードと単一メジャーレコードのどちらにデータがあるかにかかわらず、任意のテーブルをクエリし、いずれかの種類のレコードを使用してクエリ結果を書き込むことができます。

スケジュールされたクエリの仕様で TargetConfiguration を使用して、クエリ結果を送信先派生テーブルの適切な列にマッピングします。以下のセクションでは、派生テーブルで異なるデータモデルを実現するためにこの TargetConfiguration を指定するさまざまな方法について説明します。具体的な内容は次のとおりです。
+ クエリ結果にメジャー名がなく、TargetConfiguration でターゲットメジャー名を指定した場合に、マルチメジャーレコードを書き込む方法。
+ クエリ結果でメジャー名を使用してマルチメジャーレコードを書き込む方法。
+ マルチメジャー属性が異なる複数のレコードを書き込むようにモデルを定義する方法。
+ 派生テーブルの単一メジャーレコードに書き込むようにモデルを定義する方法。
+ スケジュールされたクエリで単一メジャーレコードやマルチメジャーレコードをクエリし、結果を単一メジャーレコードまたはマルチメジャーレコードのいずれかにマテリアライズすることで、データモデルの柔軟性を選択できるようにする方法。

## 例: マルチメジャーレコードのターゲットメジャー名
<a name="scheduledqueries-mappings-targetmeasurename"></a>

この例では、クエリがマルチメジャーデータを含むテーブルからデータを読み取り、マルチメジャーレコードを使用して結果を別のテーブルに書き込んでいます。スケジュールされたクエリ結果には、自然なメジャー名の列がありません。ここでは、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 を含む 1 つのマルチメジャーレコードを作成します。TargetMultiMeasureAttributeName をオプションで使用して、クエリ出力列の名前を結果のマテリアライズに使用される別の属性名に変更できます。

以下は、このスケジュールされたクエリがマテリアライズされた後の送信先テーブルのスキーマです。次の結果の Timestream for LiveAnalytics 属性タイプからわかるように、メジャースキーマに示されているとおり、結果は単一メジャー名 `dashboard-metrics` を含むマルチメジャーレコードにマテリアライズされます。


| 列 | タイプ | Timestream for LiveAnalytics の属性タイプ | 
| --- | --- | --- | 
| リージョン | 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 | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 

## 例: マルチメジャーレコードでスケジュールされたクエリからのメジャー名を使用する
<a name="scheduledqueries-mappings-usingmeasurename"></a>

この例は、単一メジャーレコードを含むテーブルから読み取り、結果をマルチメジャーレコードにマテリアライズするクエリを示しています。この場合、スケジュールされたクエリ結果には、スケジュールされたクエリの結果がマテリアライズされるターゲットテーブルのメジャー名として値を使用できる列があります。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 に変更されました。

以下は、このスケジュールされたクエリがマテリアライズされた後の送信先テーブルのスキーマです。次の結果の Timestream for LiveAnalytics 属性タイプからわかるように、結果はマルチメジャーレコードにマテリアライズされます。メジャースキーマを見ると、クエリ結果に表示される値に対応する 9 つの異なるメジャー名が取り込まれていました。


| 列 | タイプ | Timestream for LiveAnalytics の属性タイプ | 
| --- | --- | --- | 
| リージョン | 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 | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| cpu\_system | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| cpu\_user | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| disk\_free | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| disk\_io\_writes | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| disk\_used | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| memory\_cached | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| memory\_free | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| memory\_free | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 

## 例: 異なる属性を持つ異なるマルチメジャーレコードに結果をマッピングする
<a name="scheduledqueries-mappings-mappintresultstodiffrentmultimeasure"></a>

次の例は、クエリ結果の異なる列を、異なるメジャー名を含む複数のマルチメジャーレコードにマッピングする方法を示しています。次のスケジュールされたクエリ定義が表示される場合、クエリの結果には 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 を含む 1 つのマルチメジャーレコード、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 に名前が変更されます。

マルチメジャーレコードのマッピングを定義する場合、Timestream for LiveAnalytics はクエリ結果のすべての行を検査し、NULL 値を持つ列値を自動的に無視します。その結果、複数のメジャー名を含むマッピングでは、マッピングの当該グループの列値すべてが特定の行に対して NULL である場合、その行における当該メジャー名の値は取り込まれません。

例えば、次のマッピングでは、avg\_mem\_cached\_1h、min\_mem\_free\_1h、max\_mem\_used\_1h がメジャー名 mem\_aggregates にマッピングされます。クエリ結果の特定の行について、これらすべての列値が NULL の場合、Timestream for LiveAnalytics はその行のメジャー mem\_aggregates を取り込みません。特定の行の列 9 つがすべて 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"
        }
    }
}
```

以下は、このスケジュールされたクエリがマテリアライズされた後の送信先テーブルのスキーマです。


| 列 | タイプ | Timestream for LiveAnalytics の属性タイプ | 
| --- | --- | --- | 
| リージョン | 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 | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| disk\_aggregates | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 
| mem\_aggregates | multi | [{'dimension\_name': 'region', 'data\_type': 'varchar'}] | 

## 例: クエリ結果からメジャー名を含む単一メジャーレコードに結果をマッピングする
<a name="scheduledqueries-mappings-mappintresultstosinglemeasurerecords"></a>

以下は、結果が単一メジャーレコードにマテリアライズされるスケジュールされたクエリの例です。この例では、クエリ結果に measure\_name 列があり、その値はターゲットテーブルでメジャー名として使用されます。TargetConfiguration.TimestreamConfiguration の MixedMeasureMappings 属性を使用して、ターゲットテーブルのスカラーメジャーへのクエリ結果列のマッピングを指定します。

次の定義例では、クエリ結果が 9 つの異なる 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"
        }
    }
}
```

以下は、このスケジュールされたクエリがマテリアライズされた後の送信先テーブルのスキーマです。スキーマからわかるように、テーブルは単一メジャーレコードを使用しています。テーブルのメジャースキーマを一覧にすると、仕様で指定されたマッピングに基づいて書き込まれた 9 つのメジャーが表示されます。


| 列 | タイプ | Timestream for LiveAnalytics の属性タイプ | 
| --- | --- | --- | 
| リージョン | 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'}] | 

## 例: クエリ結果列をメジャー名として単一メジャーレコードに結果をマッピングする
<a name="scheduledqueries-mappings-mappintresultstsolumnsasmeasurename"></a>

この例では、結果にメジャー名列がないクエリがあります。代わりに、出力を単一メジャーレコードにマッピングするときに、クエリ結果列の名前をメジャー名にします。前述の例では、類似する結果がマルチメジャーレコードに書き込まれました。この例は、アプリケーションシナリオに適している場合の、単一メジャーレコードへのマッピング方法を示しています。

ここでも、TargetConfiguration.TimestreamConfiguration の MixedMeasureMappings プロパティを使用してこのマッピングを指定します。次の例では、クエリ結果に 9 つの列があります。結果列をメジャー名、値を単一メジャー値として使用します。

例えば、クエリ結果の特定の行で、列名 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"
        }
    }
}
```

以下は、このスケジュールされたクエリがマテリアライズされた後の送信先テーブルのスキーマです。ご覧のように、ターゲットテーブルには double 型の単一メジャー値を含むレコードが保存されています。同様に、テーブルのメジャースキーマには 9 つのメジャー名が表示されています。また、マッピングの名前が sum\_1h から total\_disk\_io\_writes\_1h に変更されたため、メジャー名 total\_disk\_io\_writes\_1h が存在することに注意してください。


| 列 | タイプ | Timestream for LiveAnalytics の属性タイプ | 
| --- | --- | --- | 
| リージョン | 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'}] | 