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

2020年2月18日BigQueryBigQuery SQLサンプル

やりたいこと

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
12020-02-21T00:00:00
22020-02-21T01:00:00
32020-02-21T02:00:00
42020-02-21T03:00:00
52020-02-21T04:00:00
62020-02-21T05:00:00
72020-02-21T06:00:00
82020-02-21T07:00:00
92020-02-21T08:00:00
102020-02-21T09:00:00
112020-02-21T10:00:00
122020-02-21T11:00:00
132020-02-21T12:00:00
142020-02-21T13:00:00
152020-02-21T14:00:00
162020-02-21T15:00:00
172020-02-21T16:00:00
182020-02-21T17:00:00
192020-02-21T18:00:00
202020-02-21T19:00:00
212020-02-21T20:00:00
222020-02-21T21:00:00
232020-02-21T22:00:00
242020-02-21T23:00:00