iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【SQL】unnestってなんだ

先日同様に、Firebase A/B Testing の結果をBigQueryで出力したところ、見慣れないunnestという演算子があったのでメモ🔰

結論

unnest演算子は、ARRAYREPEATEDなカラムをフラット化し、一行にしたテーブルを返します。

公式のサンプルを拝借すると下記のような感じで、ARRAYが展開されているのがわかります。

SELECT *
FROM UNNEST(['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred'])
  AS element
WITH OFFSET AS offset
ORDER BY offset;

+----------+--------+
| element  | offset |
+----------+--------+
| foo      | 0      |
| bar      | 1      |
| baz      | 2      |
| qux      | 3      |
| corge    | 4      |
| garply   | 5      |
| waldo    | 6      |
| fred     | 7      |
+----------+--------+

また、Google AnalyticsのデータをBigQueryで使う際に登場するuser_propertiesのようなREPEATEDなカラムも下記のようにして簡単にアクセスできるようになります。

...
        FROM
          `analytics_hoge.events_*`,
            UNNEST(user_properties) AS userProperty
        WHERE
          (_TABLE_SUFFIX between '20201105' AND '20201202')
          AND userProperty.key = "firebase_exp_34"
...

てな感じで本日も以上となります🍺

参考

その他の記事

yamatooo.blog

yamatooo.blog

yamatooo.blog