新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

AWS Redshiftで連番・カレンダーテーブルを作る方法

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の対応表作ろうかなぁ。

関連カテゴリー(AWS)記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com