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 |