

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

# データクエリ - SQL クエリとテーブル設定
<a name="dataexports-data-query"></a>

データエクスポートでは、提供されているテーブル (CUR 2.0 など) に対して実行される SQL クエリ (列選択、行フィルター、列エイリアシング) を記述できます。各テーブルには、テーブルに含まれるデータを変更するテーブル設定がある場合もあります。例えば、CUR 2.0 では、時間単位、日単位、月単位の時間詳細度を選択する設定や、コストと使用状況のデータをリソースレベルの粒度で追加する設定を指定できます。

エクスポートデータクエリを完全に定義するには、次の 2 つの属性を指定する必要があります。
+ **SQL クエリ:** SQL ステートメントはテーブルに対して実行され、エクスポートによって返されるデータを決定します。
+ **テーブル構成:** テーブル構成設定により、SQL クエリがテーブルに対して実行される前に、テーブルに含まれるデータが変更されます。

**[データエクスポート]** コンソールページでは、選択内容に基づいて SQL ステートメントとテーブル設定を作成するワークフローを使用できます。データエクスポート SDK/CLI では、独自の SQL ステートメントとテーブル設定を記述できます。

データエクスポートの SQL ステートメント (`QueryStatement`) は次の構文を使用します。

```
SELECT <column_name_a>, <column_name_b>.<attribute_name> AS <new_name>, ... 
FROM <TABLE_NAME>
[ WHERE <column_name> OPERATOR <value> AND|OR ... ]
[ LIMIT number ]
```

データエクスポートのテーブル設定 (`TableConfigurations`) は次の構文を使用します。

```
{"<TABLE_NAME>":
    {"<CONFIGURATION_NAME_A>": "<value>",
     "<CONFIGURATION_NAME_B>": "<value>", 
     ...}
            }
```

## SQL クエリ
<a name="dataexports-sql-query"></a>

SQL クエリ: SQL ステートメントはテーブルに対して実行され、エクスポートによって返されるデータを決定します。SQL ステートメントはエクスポートの作成後に変更できますが、選択したテーブルは変更できません。

SQL ステートメント (QueryStatement フィールド) には、最大 36,000 文字を使用できます。

データエクスポート SQL クエリで使用可能なキーワードは次のとおりです。

**注記**  
キーワードでは大文字小文字を区別しません。列名、テーブル名では大文字と小文字が区別されます。

**SELECT**  
必須。  
テーブルから選択する列を指定します。1 つのクエリにつき 1 つの SELECT ステートメントのみ使用できます。  
ドット演算子 `.` を使用して、MAP 列または STRUCT 列の属性を別の列として選択することを指定します。SQL 出力の結果となる列の名前は、デフォルトでは属性名です。  
例えば、製品の MAP 列から属性を選択できます。  
`SELECT product.from_location FROM COST_AND_USAGE_REPORT`  
これにより、`product` 列から `from_location` 属性が選択され、その属性のデータを持つ新しい列が作成されます。デフォルトでは、出力でこの列の名前は `from_location` になります。ただし、名前は `AS` で変更できます。  
各テーブルで使用可能な MAP 列と STRUCT 列、およびこれらの列の属性の詳細については、「[データエクスポートテーブルディクショナリ](https://docs.aws.amazon.com/cur/latest/userguide/dataexports-table-dictionary.html)」を参照してください。

**AS**  
オプション。  
選択されている列の名前を変更できるようにします。新しい列名には、スペースや英数字 (a-z、A-Z、0-9) およびアンダースコア (\_) 以外の文字を使用することはできません。列のエイリアスを定義するときに、他の文字を使用するために引用符を使用することはできません。  
エイリアシングは、MAP または STRUCT 列の属性を選択し、結果の列の名前を CUR のスキーマと一致させるために変更する場合に便利です。例えば、CUR の `product_from_location` 列の表示方法を一致させるには、CUR 2.0 テーブルを使用してデータエクスポートに次のクエリを記述します。  
`SELECT product.from_location AS product_from_location FROM COST_AND_USAGE_REPORT`  
これにより、`product_from_location` という名前の列を含むエクスポートが作成されます。

**FROM**  
必須。  
クエリするテーブルを指定します。1 つのクエリにつき 1 つの FROM ステートメントのみ作成できます。

**WHERE**  
オプション。  
指定した句に一致する行のみをフィルタリングします。  
WHERE 句では以下の演算子がサポートされます。  
+ **=** 値は文字列または数値と一致する必要があることを表します。
+ **\!= および <>** 値は、指定した文字列または数値と一致しないことを表します。
+ **<、<=、>** および **>=** 値は、数値より小さい、数値以下、数値より大きい、または数値以上であることを表します。
+ **AND** は、指定された 2 つの条件がともに true である場合に一致することを表します。**AND** キーワードは、2 つ以上の条件を指定するために使用することもできます。
+ **OR** は、指定された条件のいずれかが true である場合に一致することを表します。複数の **OR** キーワードを使用して、2 つ以上の条件を指定することができます。
+ **NOT** 指定された条件が true でない場合に一致することを表します。
+ **IN** キーワードの後の括弧内で指定された値のいずれかが true である場合に一致することを表します。
+ 括弧を使用すると、複数条件の WHERE 句をコンストラクトできます。
文字列を演算子の後の値として表現する場合は、二重引用符の代わりに一重引用符 `'` を使用します。一重引用符をエスケープする必要はありません。例えば、次の WHERE ステートメントを記述できます。  
`WHERE line_item_type = 'Discount' OR line_item_type = 'Usage'`

**LIMIT**  
オプション。  
クエリによって返される行の数を、指定した値に制限します。

## テーブル設定
<a name="dataexports-table-configurations"></a>

テーブル設定はユーザーが制御するプロパティで、ユーザーはデータエクスポートでクエリされる前にテーブルのデータまたはスキーマを変更するように設定できます。テーブル設定は JSON ステートメントとして保存され、 AWS SDK/CLI のユーザー入力またはコンソールのユーザー選択によって指定されます。

例えば、CUR 2.0 には、データの粒度 (時間単位、日単位、月単位)、リソースレベルの詳細なデータを含めるかどうか、分割コスト配分データを含めるかどうかを変更するテーブル設定があります。すべてのテーブルに設定があるわけではありません。各テーブルで使用できる設定の詳細については、「[データエクスポートテーブルディクショナリ](https://docs.aws.amazon.com/cur/latest/userguide/dataexports-table-dictionary.html)」を参照してください。

各テーブル設定パラメータには、ユーザーがテーブル設定を指定しなかった場合に想定されるデフォルト値があります。テーブル設定はエクスポートの作成後に変更することはできません。