BigQueryでネストされたデータを良い感じに展開してくれる unnest関数

ネストしているデータに対し、レガシー、スタンダードの両方でのデータの出し方を纏めてみます。

参考:
https://www.marketechlabo.com/bigquery-legacy-sql/
https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql?hl=JA

まず、ネストのデータ構造について。
この辺はXMLDBみたいな形ですが、

user
data
.data_key
.data_name

みたいに「data」の中に複数の情報が入る形になっています。
select * みたいなもので全展開すると、data_keyが複数入っている場合は出力行も複数になったりします。
(ネストの外側の部分は同値を入れて補完してくれる)

●レガシーの取得方法
select user, data.data_name
from {テーブル}
where data.data_key = 'xxx'

※そのまま展開して使っている


●スタンダードの取得方法
select user, data.data_name
from {テーブル},
unnnest(data) as data
where data.data_key = 'xxx'

※一旦unnestを指定する必要がある


スタンダードSQLを使いたいときの構造指定みたいな感じです。
bigqueryはデータの持ち方が先の時代に進んでるようだ。