AWS RedshiftからGoogle BigQueryに移行して、ここ数年Redshiftを使っていませんでした。
しかし、ついに従量課金のRedshiftこと、Redshift Serverlessが登場して気になりはじめ、久しぶりに遊び程度ですがRedshiftを使ってみました。
案の定、使い方は完全に忘れていました…。
RedshiftでSQLを書いている時、連番テーブルやカレンダーテーブルが欲しことがあったのですが、それらを作るのに手間取ったので、ここにメモしておきます。
連番テーブル
RedshiftのSQLはPostgreSQL準拠で、PostgreSQLには連番を生成する関数generate_series()
関数がありますが、Redshiftはgenerate_series()
をサポートしていません。
しかしこれは、テーブルの行を読み出した時に呼び出す場合の話で、実はFROM
を伴わない、単独呼び出しには使えます。
例
0から2までの連番テーブル
SELECT generate_series(0, 2) AS cnt
cnt |
---|
0 |
1 |
2 |
カレンダーテーブル
連番テーブルが作れたので、後はそれを使ってカレンダーテーブルが作れます。
例
2022-01-01から3日間のカレンダーテーブル
SELECT DATEADD(DAY, cnt, DATE('2022-01-01')) AS dt FROM (SELECT generate_series(0, 2) AS cnt)
dt |
---|
2022-01-01 00:00:00 |
2022-01-02 00:00:00 |
2022-01-03 00:00:00 |
感想など
Redshift Serverlessは従量課金なので、使わない時はほっとけばいいので精神衛生上いいですね。
RedshiftとBigQueryを行き来していたら頭が疲れてしまいました。
よく使う構文の、RedshiftとBigQueryの対応表作ろうかなぁ。