Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. エンジニア歴1年目で得たLooker開発Tips:LookML/Explore編

エンジニア歴1年目で得たLooker開発Tips:LookML/Explore編

投稿者:杉山

目次

1.はじめに
2.Tips
3.さいごに

1.はじめに

こんにちは、杉山です。
今年の春にビジュアリゼーションに関するTipsをご紹介し、あれもこれも書きたいなーと別のブログを書いていたら秋になってました・・・ということで、半年ぶりのLooker開発Tipsです!今回はLookMLの定義やExploreの表計算に関するTipsをご紹介します◎

前回ブログはこちら↓
エンジニア歴1年目で得たLooker開発Tips:ビジュアリゼーション編

2.Tips

Tips1:曜日を日本語で表示させる

Lookerの標準機能としてdimension_groupのtimeを使用し、day_of_week(英語表記の曜日:Sunday)またはday_of_week_index(数値表記の曜日:0 = Monday, 6 = Sunday)で曜日を表示することが可能です。
ただ、曜日を日本語で表示したい場面も多いかと思います。
そういった場合、LookMLのCASE文またはExploreの表計算カスタムディメンションを用いて日本語化が可能です!

LookMLでCASE文を書くメリットとしては、やはり再利用性が高いところがポイントです◎
day_of_weekを使用する場合の具体的な定義↓

dimension: day_of_week_jp {
    label: "曜日"
    type: string
    sql:CASE
            WHEN ${date_day_of_week} = "Sunday" THEN "日"
            WHEN ${date_day_of_week} = "Monday" THEN "月"
            WHEN ${date_day_of_week} = "Tuesday" THEN "火"
            WHEN ${date_day_of_week} = "Wednesday" THEN "水"
            WHEN ${date_day_of_week} = "Thursday" THEN "木"
            WHEN ${date_day_of_week} = "Friday" THEN "金"
            WHEN ${date_day_of_week} = "Saturday" THEN "土"
        END ;;
}

一方Exploreの表計算・カスタムディメンションを使用するメリットとしては、編集画面の右側に定義の書き方が表示されるため、とても容易に実装が可能です!

※表計算の画面を表示していますが、カスタムディメンションも同じ定義で使用可能です

day_of_weekを使用する場合の具体的な定義↓

coalesce(
 if(${calendar.date_day_of_week}= "Sunday","日", null),
 if(${calendar.date_day_of_week}= "Monday","月", null),
 if(${calendar.date_day_of_week}= "Tuesday","火", null),
 if(${calendar.date_day_of_week}= "Wednesday","水", null),
 if(${calendar.date_day_of_week}= "Thursday","木", null),
 if(${calendar.date_day_of_week}= "Friday","金", null),
 if(${calendar.date_day_of_week}= "Saturday","土", null)
)

day_of_week_indexを使用する場合↓

coalesce(
 if(${calendar.date_day_of_week_index}= 6,"日", null),
 if(${calendar.date_day_of_week_index}= 0,"月", null),
 if(${calendar.date_day_of_week_index}= 1,"火", null),
 if(${calendar.date_day_of_week_index}= 2,"水", null),
 if(${calendar.date_day_of_week_index}= 3,"木", null),
 if(${calendar.date_day_of_week_index}= 4,"金", null),
 if(${calendar.date_day_of_week_index}= 5,"土", null)
)

これら定義したカラムをダッシュボードで見てみると、想定通りに日本語で曜日が表示されています◎

Tips2:ドリルダウン時のskip_drill_filter機能

drill_fieldで定義するドリルダウンを使用する場合、使用するdimension/measureのlink定義や思いがけずフィルターが複数かかり正常にドリルダウンできない場合があります。そういった場合には、一度ドリルダウンで表示されるExploreのフィルタから予期せずかかっているフィルタ項目を確認し、該当する項目に対してLookMLでskip_drill_filter:yesを定義します。

例)エリア別売上のダッシュボードでは、x軸に店舗エリア、y軸に売上金額が表示されています。


Exploreでは直営かフランチャイズかを識別する「直営/FC」の項目が非表示で含まれています。

この場合渋谷区の売上金額からドリルダウンすると、渋谷区がF1というフランチャイズにあたるため、直営/FCのフィルタがF1の表が表示されます。

ドリルダウンした表で直営/FCのフィルタをスキップしたい場合、LookMLで直営/FCの項目にskip_drill_filter:yesを定義します。

定義する前は直営/FCの項目がドリルダウンした表にフィルタとして含まれていましたが、定義後の表には含まれていないことが確認できました◎

Tips3:BigQueryの「説明」を引用したLookML定義

カラム名を日本語に変更する場合はlabelを定義する必要がありますが、大量のデータを扱う場合はlabelの定義のみでも多くの時間が必要になります。そういった場面でBigQueryのスキーマにある「説明」に日本語名が設定されている場合、Lookerがview作成時にdescriptionとして動的に定義してくれます!

BigQueryのスキーマ画面
テーブルからviewを作成したLookML画面

descriptionで定義された情報は、ctrl+Hで置換が可能なのでdescription->labelに変更することでlabelの定義が可能です◎

descriptionを一括でlabelに変更した画面

3.さいごに

今回はLooker開発でのLookML定義やExploreに関連したTipsについてご紹介しましたが、いかがでしたでしょうか?
ご紹介した内容は比較的難易度が低いので、是非同じような場面でお困りの際はお試しください^^Lookerには本ブログでご紹介した機能以外にも便利な機能が沢山ございますので、今後もTipsとしてご紹介できればと思います!


 

ページのトップへ