カテゴリー: GCP

BigQuery含むGCPに関する情報を提供する

  • BigQueryのunnest関数が便利

    BigQueryのunnest関数が便利

    はじめに

    BigQueryの「大容量のデータを高速でスキャンできる」「従量課金の料金形態」という性質から、テーブル設計をはじめるとRDBMSといろいろ違いがでてくる。 今回は配列をカラムに格納する上で便利なunnest(アンネスト)関数を紹介。

    前提

    サンプルコードを動かす前に、with関数を使ってメモリー上に試験的に使うデータを保持するようにする。

    #standardSQL
    WITH data AS (
      SELECT "primes under 15" AS description,
      [1,2,3,5,7,11,13] AS primes_array)

    この時点で

    #standardSQL
    WITH data AS (
      SELECT "primes under 15" AS description,
      [1,2,3,5,7,11,13] AS primes_array)
      
    SELECT count(*) FROM data

    を実施すると 1 が返ってくる。つまり1レコード登録されている状態。

    unnest関数で紐解く

    #standardSQL
    WITH data AS (
      SELECT "primes under 15" AS description,
      [1,2,3,5,7,11,13] AS primes_array)
    SELECT description, prime 
    FROM data, UNNEST (primes_array) as prime

     

    from テーブル名, unnest(内部カラム) ;

    という形式でデータを取り出す。 この時点で

    #standardSQL
    WITH data AS (
      SELECT "primes under 15" AS description,
      [1,2,3,5,7,11,13] AS primes_array)
      
    SELECT count(*)
    FROM data, UNNEST (primes_array) as prime

    を実施すると 7 レコード返ってくる。

    Google Developerドキュメント

    Firebase blogのドキュメントに具体的な利用方法が書かれてある。 https://developers-jp.googleblog.com/2017/04/bigquery-tip-unnest-function.html    

    参考情報

    ストーリー仕立てで分かりやすくまとまっているのでおすすめ。