LookerでUNNESTが使いたかった


こちらの記事のようにカンマで区切られた値が入った列を、UNNESTで展開した状態でLookerで扱いたかった。


公式にUNNESTを扱うパターンが載っていたのでこちらを見よう見まねでやってみた。
explore: sales {
  join: sales_billing_date {
    sql: LEFT JOIN UNNEST(SPLIT(billing_date, ",")) as billing_date ;;
    relationship: one_to_many
  }
}

view: sales_billing_date {
  dimension: billing_date {
    type: date
    sql: billing_date;;
  }
}
売上(sales)テーブルに請求日(billing_date)がカンマ区切りで入っているような構造で、上記のようなLookMLで請求日を単一値に展開することができた。

だが、フィルター条件に指定すると元の文字型のまま扱ってしまうようで表示はできても検索条件に使えないイマイチな状態になってしまった。

もしかしたら他にも方法があるのかもしれないが、おおもとのBigQueryで展開済みのViewを作っておくのが早そう。
派生テーブルも使えるかも。
※追記
派生テーブルを使った方がこのようにスッキリ書けた。
また、フィルター条件はtime型にすることでできるようになった。
view: sales {
  derived_table: {
    sql:
      SELECT
        sales.*,
        splited_billing_date
      FROM
        project.dataset.sales AS sales
        LEFT JOIN UNNEST(SPLIT(billing_date, ",")) AS splited_billing_date
      ;;
  }




  dimension_group: billing_date {
    type: time
    timeframes: [
      raw,
      date,
      week,
      month,
      quarter,
      year
    ]
    convert_tz: no
    datatype: date
    sql: DATE(${TABLE}.splited_billing_date) ;;
  }