はじめに
AWS Athenaで elb_logsというテーブルがあったので、試しにSELECTしましたが、下記のエラー文が表示されました。
クエリには次のエラーがあります。
No output location provided. An output location is required either through the Workgroup result configuration setting or as an API input. (Service: AmazonAthena; Status Code: 400; Error Code: InvalidRequestException; Request ID: 3db40425-2c5b-417f-80c9-cc103727faf2; Proxy: null)
解決法
AthenaはS3に格納してあるデータから実行したクエリ結果をS3に再保存するようになってるので、どのBucketのどのパスに保存するかという設定が必要なようです。
あとで気付いたんですが、灯台下暗しというか、クエリ実行画面の上部にバリバリ書いてました。
(必要な方は)適当なBucketを作成した後、上記の「Amazon S3でクエリ結果の場所を設定する」から、保存先を設定します。
今回はdatalake-non-projectというバケットのdevフォルダを選択します。お好みや要件に合わせて暗号化などを行って下さい。
ちなみに暗号化はセキュリティ、パフォーマンス、可用性・耐久性を両立させるために、SSE-KMS(サーバーサイド暗号化)がお勧めです。
参考=>データレイク構築における成功の秘訣 ~マインドと進め方、設計ベストプラクティス~
今度は実行できました!実行時間や結果のデータサイズ、クエリ結果などが表示されます。
S3を確認すると、Apatch Hive形式で、年月日でパーティション分割されたフォルダ(ない場合は新規作成される)の配下に、結果のCSVファイルおよびメタデータのファイルが保存されており、データ分析のしやすい形となっています。