AWS Athenaで結果を強引にJSONで受け取る方法 : tl;dr Athenaの実行結果をJSONで受け取りたかった SQLですべてのカラムを一つのJSONにキャストすればJSONで受け取れる 本格的にETLするならGlueジョブを使いましょう はじめに AWS AthenaはマネージドPrestoとも言えるサービスでクラスタを管理しなくても手軽にS3のデータにクエリを投げれる良いサービスです。 一方でAthenaはINSERT文に対応していなかったり、クエリの出力形式がCSVかつ無圧縮しか選択できなかったりと、なんらかETLをするには不向きなサービスです(2018/10/15時点)。本格的なETLにはGlueを使うのがいいんですが、整形されたデータをチョロチョロっとサマって他のプログラムの入力にしたいみたいケースでは手軽にAthenaで済ませたくなります。そういった際に出力をプログラムで扱いやすいJSON形式でできるとなお嬉しいです。 ということで以下のようなクエリを書いてみました。 クエリ こんな感じで出力結果をMAP経由でJSONにキャストすると結果を一つのJSON形式にできます。(サブクエリの中は適当なサンプルデータです。) SELECT CAST( MAP( ARRAY[ 'name', 'age', 'skils', 'account' ], ARRAY[ CAST(name as JSON), CAST(age as JSON), CAST(skils as JSON), CAST(account as JSON) ] ) AS JSON) AS json_data FROM ( SELECT 'kanga' as name, 100 as age, ARRAY['sql','aws'] as skils, MAP( ARRAY['qiita', 'twitt...