今回はBigQuery上で行われるアンネスト(UNNEST)処理についてご紹介します。
目次
はじめに
最近私はBigQueryを使ってデータの処理を学び始めたのですが、そこで個人的に面白いと感じたテーブル設定「アンネスト」という処理について、そしてBigQuery上でどんな操作を行うのかご紹介したいと思います。アンネストって何?
まずアンネスト(Unnest)とは本来のデータが入れ子構造になっているところをあえて横並びにばらすことです。こうすることで本来別の場所にあったデータを一緒に扱うことができ、マトリョーシカ状になったデータを一つ一つ開けることがないためSQLやBigQueryを用いたフラットなデータ分析をする際に行われる処理です。 アンネストの手法としてUNNEST関数を使う手法と一つ一つ指定して収納場所を変えていく手法がありますが、今回自分は後者でUNNEST処理を行なったため例を用いながら紹介して行きます。イメージはこんな感じ!
例えば夜9時に何をしていたのか、を4人に聞いて集めたデータがあるとします。その時のデータは通常下図のように収納されています。
これをアンネスト処理を行うと以下のように横に広がったデータ構造になります。
「あなたは夜9時に何をしていましたか?」という質問に対して、「はい」なら”1″を「いいえ」なら”0″を答えているように見えますね!
実際に書いてみた
上記のイベントをBigQuery上でアンネストすると以下のようなコードになります。↓CASE WHEN event_name = 'ランニング' THEN 1 ELSE 0 END AS running,
CASE WHEN event_name = '夕食食べていた' THEN 1 ELSE 0 END AS dinner,
CASE WHEN event_name = '入浴' THEN 1 ELSE 0 END AS bathing,
CASE WHEN event_name = '映画鑑賞' THEN 1 ELSE 0 END AS movie
さいごに
このアンネスト処理ではCASE WHEN event_name = 'abc’

