Amazon Athena のクエリ結果を JSON や Parquet などの CSV 以外の形式で保存したいと思っています。
簡単な説明
SELECT クエリを実行する場合、Athena は CSV 出力ファイルのみをサポートします。Athena からの出力を CSV 以外の形式で保存するには、次のいずれかのオプションを選択します。
UNLOAD ステートメントでは、SELECT クエリの出力がいくつかの異なるデータ形式のいずれかで書き込まれますが、新しいテーブルは作成されません。CTAS クエリでも、さまざまなデータ形式で出力が書き込まれますが、その出力を使用して新しいテーブルが作成されます。UNLOAD と CTAS はどちらも、Apache Parquet、ORC、Apache Avro、JSON などの形式をサポートしています。
**注:**UNLOAD と CTAS はどちらもパーティショニングをサポートしていますが、バケット化をサポートしているのは CTAS だけです。
解決策
UNLOAD クエリを実行する
UNLOAD ステートメントを使用するには、UNLOAD の後に SELECT クエリを括弧で囲み、WITH ステートメントでファイルタイプを指定します。例えば、次のクエリは SELECT からの出力を JSON ファイルとして Amazon Simple Storage Service (Amazon S3) バケット amzn-s3-example-bucket に保存します。
UNLOAD (SELECT col1, col2 FROM example_table)
TO 's3://amzn-s3-example-bucket/example_folder/'
WITH (format = 'JSON')
UNLOAD からのファイル出力を変更する方法の詳細については、「パラメータ」を参照してください。
CTAS クエリを実行する
CTAS クエリの出力を CSV 以外の形式で保存するには、WITH ステートメントで format プロパティを設定します。例えば、次のクエリは Parquet 形式で SELECT によって返されたデータから ctas-parquet-example という新しいテーブルを作成します。
`CREATE TABLE ctas_parquet_example WITH (format = '`_`PARQUET`_`') AS SELECT col1, col2, FROM example_table;`
CTAS パラメーターの詳細については、「CTAS テーブルのプロパティ」を参照してください。
出力データファイルのみを保持し、新しいテーブルは保持しない場合は、クエリの完了後に CTAS テーブルを削除します。
関連情報
CTAS クエリに関する考慮事項と制限事項
CTAS クエリの例