CTAS クエリに関する考慮事項と制約事項 - Amazon Athena

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

CTAS クエリに関する考慮事項と制約事項

次の表に、Athena での CTAS クエリに関して理解する必要がある事項について説明します。

Item (項目) 把握しておくべきこと
CTAS クエリ構文

CTAS クエリ構文は、テーブル作成用の CREATE [EXTERNAL] TABLE 構文とは異なります。「CREATE TABLE AS」を参照してください。

注記

CTAS クエリのテーブル、データベース、または列名には、引用符やバックティックを含めることはできません。そのために、テーブル、データベース、または列名が予約語を表していないこと、および特殊文字が含まれていないことを確認します (引用符またはバックティックで囲む必要があります)。詳細については、「テーブル、データベース、および列の名前」を参照してください。

CTAS クエリとビューの違い

CTAS クエリでは Amazon S3 の指定した場所に新しいデータ書き込みますが、ビューではデータを書き込みません。

CTAS クエリ結果の場所

ワークグループが クライアント側の設定を上書きします。 クエリ結果の場所、 Athena 場所のテーブルを作成します。 s3://<workgroup-query-results-location>/tables/<query-id>/. ワークグループに指定されたクエリ結果の場所を表示するには、 ワークグループの詳細の表示.

ワークグループがクエリ結果の場所を上書きしない場合は、CTAS クエリの構文 WITH (external_location ='s3://location/') を使用して、CTAS クエリ結果の保存場所を指定できます。

注記

external_location プロパティは、空の場所を指定する必要があります。CTAS クエリはバケットのパス位置 (プレフィックス) が空であるかどうかをチェックして、その場所に既にデータが含まれる場合は、データを上書きしません。同じ場所を再度使用するには、バケット内のキープレフィックスの場所のデータを削除します。

external_location 構文を省略し、ワークグループ設定を使用しない場合、Athena はクエリ結果の場所にクライアント側の設定を使用し、場所 s3://<client-query-results-location>/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/ にテーブルを作成します 。

孤立したファイルの検索

CTAS または INSERT INTO ステートメントが失敗した場合、孤立したデータがデータの場所に残っている可能性があります。Athena はバケットからデータ (部分データも含む) を削除しないため、後続のクエリでこの部分データが読み取り可能になる可能性があります。検査または削除する孤立したファイルを見つけるには、Athena に用意されているデータマニフェストファイルを使用して、書き込まれるファイルのリストを追跡できます。詳細については、「クエリ出力ファイルの識別」および「DataManifestLocation」を参照してください。

クエリの結果を保管する形式

CTAS クエリの結果は、デフォルトで Parquet 形式で保存されます (データストレージ形式を指定しない場合)。CTAS 結果を PARQUETORCAVROJSON、および TEXTFILE. 複数文字の区切り文字は、CTAS ではサポートされていません。 TEXTFILE フォーマット。CTASクエリは、 SerDe フォーマット変換を解釈します。「Example: Writing Query Results to a Different Format」を参照してください。

圧縮形式

デフォルトでは、GZIP 圧縮が CTAS クエリ結果に使用されます。Parquet および ORC では、SNAPPY を指定することもできます。「Example: Specifying Data Storage and Compression Formats」を参照してください。

パーティションとバケットの制限

CTAS クエリの結果データをパーティション化およびバケット化することができます。詳細については、「バケット化とパーティション化の比較」を参照してください。Athena では、100 個の一意のパーティションとバケットの組み合わせへの書き込みがサポートされます。たとえば、送信先テーブルにバケットが定義されていない場合、最大 100 個のパーティションを指定できます。バケットを 5 個指定すると、(それぞれ 5 個のバケットを持つ) 20 個のパーティションが許可されます。この数を超えると、エラーが発生します。

送信先テーブルのプロパティを指定する WITH 句の最後に、パーティション化とバケット化の述語を含めます。詳細については、「Example: Creating Bucketed and Partitioned Tables」および「バケット化とパーティション化の比較」を参照してください。

100 パーティションの制限を回避する方法については、「CTAS および INSERT INTO を使用した、100 個を超えるパーティションを持つテーブルの作成」を参照してください。

暗号化

Amazon S3 で CTAS クエリの結果を暗号化できます。これは Athena で他のクエリの結果を暗号化する方法と同様です。詳細については、Amazon S3 に保存されたクエリ結果の暗号化 を参照してください。

データ型

CTAS クエリの列のデータ型は元のクエリに指定されているものと同じです。