[Looker]dimension groupで作られる時間系のフィールドの表記を変更してみた #looker

2021.05.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

さがらです。

Lookerではdimension groupを使うことで、月や日など、時間系のフィールドを簡単かつまとめて作成することが出来ます。

しかし、dimension groupで作られるフィールドは英語表記であり、馴染みのないビジネスユーザーからすると「MonthとMonth Numって何が違うの?」となってしまう可能性も0ではないと思います。

そこで、時間系のフィールドの表記をどうにか変更できないか試してみたので、本エントリでまとめてみます。

通常のdimension group

まず振り返りも兼ねて、通常のdimension groupの場合はどう作られるのか確認します。

下記のようにdimension_groupというパラメータで定義して、timeframesパラメータ内で必要な粒度の名称を書くだけで、時間系のフィールドがまとめて定義が出来るものですね。

 dimension_group: created {
  type: time
  timeframes: [
    raw,
    time,
    hour_of_day,
    date,
    day_of_week,
    day_of_week_index,
    day_of_month,
    day_of_year,
    week,
    week_of_year,
    month,
    month_name,
    month_num,
    quarter,
    year
  ]
  sql: ${TABLE}.created_at ;;
  convert_tz: no
}

どうやってdimension groupの表記を変更するのか?

さて本題です。どうやってdimension groupの各フィールドの表記を変えるのか? …方法は、「自力で定義する」しかありません

ということで自力で時間系のdimension groupを定義する方法を説明します。

自力で定義する方法

直球ですが下記LookMLのように、書けばOKです。サンプルとして、2つのdimensionを定義しています。

dimension:  created_month{
  group_label: "created_お手製"
  group_item_label: "年月(YYYY-MM)"
  type: date_month
  sql: ${TABLE}.created_at ;;
}

dimension:  created_month_num{
  group_label: "created_お手製"
  group_item_label: "月(MM)"
  type: date_month_num
  sql: ${TABLE}.created_at ;;
}

ポイントとしては、以下4点が挙げられます。

  • group_labelパラメータで関連する時間系フィールドに共通する名称をつけること(例:レコード更新時刻、など)
  • group_item_labelパラメータで、対象のExploreを使用するユーザーにとってわかりやすい名称をつけること
  • typeパラメータで、必要な値だけを取得できるようなtypeを指定すること
    • typeについては公式Docも参考にしてください。基本的にdimension_groupで定義できるtimeframesと同じものは一通りあるはずです。
  • (※任意)各dimensionの名称は、created_month_numのようにdimension_groupで定義するtimeframesと同じものとすること
    • これにより通常のdimension_groupと同じように置換演算子で参照できます。

最後に

デフォルトの英語表記そのままの方がLookMLの記述量も減りますし可読性の向上にも繋がるのですが、Lookerを使う上ではビジネスユーザーに疑問を抱くことなくスムーズにExplore使ってほしい、と私は考えています!

全Lookerユーザーに推奨するような内容ではないですが、ビジネスユーザーから「使い方がわからん」と投げ出されてしまうくらいならば、こういった方法でフォローしてあげることも1つの手かと思います。

少しでも参考になれば幸いです。