Amazon Athenaで日次パーティションをDATE型の要素として使う


これはなに

Amazon Athenaにスナップショットデータをためて行く場合、日次パーティションを利用することが多くあります。
日次でGROUP BYするなどして集計したい場合、集計日のカラムを追加し、ORDER BYすることがありますのでDATE型のカラムとして追加します。

Query

date(date_parse(year || month || day, '%Y%m%d'))でDATEに変換できます。
||で文字列として連結し、date_parseでDATETIMEに変換、00:00:00の情報はいらないのでDATEにキャストします。

SELECT count(distinct(uid)),
         sum(amount),
         date(date_parse(year || month || day,
         '%Y%m%d')) AS date
FROM users
GROUP BY year, month, day
ORDER BY date(date_parse(year || month || day,
         '%Y%m%d'))