BigQuery SQLサンプル - 1時間毎のレコード作成

やりたいこと
1日分の1時間毎のレコードを動的に作成したい
例えば、こんなデータです。
| 日時 |
|---|
| 2020-02-21T00:00:00 |
| 2020-02-21T01:00:00 |
| 2020-02-21T02:00:00 |
| : |
| 2020-02-21T22:00:00 |
| 2020-02-21T23:00:00 |
SQLサンプル
サンプルは2020年2月21日の1時間毎のレコードを作成するSQLです。
SELECT
DATETIME_ADD("2020-02-21", INTERVAL n HOUR) AS time_24
FROM
UNNEST(
GENERATE_ARRAY(0, 23)
) AS n
サンプルクエリについて説明します。
5行目の GENERATE_ARRAY 関数はBigQueryの関数で初期値と終了値と間隔を指定すると配列形式でデータを作成する関数です。
この場合は [0, 1, 2, ・・・,23] までの数値配列データとなります。
4行目の UNNEST 関数で GENERATE_ARRAYで作成した配列形式の数値データを行データに展開します。
2行目の DATETIME_ADD関数で '2020-02-21’ に対して、0時間から23時間まで順番に足し算してきます。
実行結果
| 行 | time_24 |
|---|---|
| 1 | 2020-02-21T00:00:00 |
| 2 | 2020-02-21T01:00:00 |
| 3 | 2020-02-21T02:00:00 |
| 4 | 2020-02-21T03:00:00 |
| 5 | 2020-02-21T04:00:00 |
| 6 | 2020-02-21T05:00:00 |
| 7 | 2020-02-21T06:00:00 |
| 8 | 2020-02-21T07:00:00 |
| 9 | 2020-02-21T08:00:00 |
| 10 | 2020-02-21T09:00:00 |
| 11 | 2020-02-21T10:00:00 |
| 12 | 2020-02-21T11:00:00 |
| 13 | 2020-02-21T12:00:00 |
| 14 | 2020-02-21T13:00:00 |
| 15 | 2020-02-21T14:00:00 |
| 16 | 2020-02-21T15:00:00 |
| 17 | 2020-02-21T16:00:00 |
| 18 | 2020-02-21T17:00:00 |
| 19 | 2020-02-21T18:00:00 |
| 20 | 2020-02-21T19:00:00 |
| 21 | 2020-02-21T20:00:00 |
| 22 | 2020-02-21T21:00:00 |
| 23 | 2020-02-21T22:00:00 |
| 24 | 2020-02-21T23:00:00 |














