Looker 入門
ここでは、Wantedly でデータを活用して可視化するために導入されているツールである Looker の概要について解説します。 Looker の開発に必要となる前提や手順の説明に限定し、開発と関連しない Looker の機能やその運用方法については扱いません。 なお、説明は概要にとどめて細かい実装の詳細などは他のドキュメントで補完していくものとします。
主に下のような人を想定しています。
- Looker で集計・可視化できるデータを追加・変更したい人
Looker は、データを集計・可視化することで、より良いビジネス上の意思決定を行えるようにするための BI ツールです。
以下に Looker の代表的な機能と、各機能の概 要および手順を把握するためのドキュメントを示します。 Looker にはじめて触れる場合は、これらのドキュメントを参照して概要を把握すると良いでしょう。
- コンテンツ(ダッシュボードや Look)を検索・閲覧する
- データを集計・可視化する
- コンテンツ(ダッシュボードや Look)を作成・編集する
以降は、開発の機能に関連する内容に限定して説明を続けます。
Looker の最大の特徴は、データモデリングによってデータの定義を管理することにあり ます。
適切な粒度でデータをモデル化することで、データの定義が再利用可能になり、以下の恩恵を得ることができます。
- 類似する定義の乱立を避け、定義の一元管理が可能になる
- 定義が利用箇所ごとに異なることを避け、同一の定義でデータを扱うことができる
また、Looker はデータに関する定義の管 理をする際に、Git を利用したバージョン管理や、GitHub と連携したコラボレーションをすることを前提としています。 これらの仕組みによって、効果的、かつ、効率的にデータの定義を管理できることも、Looker の特徴のひとつと言えるでしょう。
Looker におけるデータに関する定義は、LookML プロジェクトで管理されます。 LookML プロジェクトとは、モデルとビューを定義するファイル群の総称です。
モデルとビューのファイルには、それぞれ以下の情報を含みます。
- モデルのファイル
- 利用するビュー、および、ビュー同士がどのように結合されるかの情報
- ビューのファイル
- 参照するテーブル、および、テーブルからどのように情報を抽出・集計するかの情報
Looker で集計・可視化できるデータを追加変更する場合、これらのファイルを変更することが必要になります。
Explore は、データを効率的に探索することができる Looker の強力な機能です。
LookML プロジェクトにおけるモデルのファイルには、この Explore を定義します。 また、ビューのファイルには、Explore におけるデータの抽出・集計のために利用されるディメンションやメジャーを定 義します。
以下はよくあるユースケースと、それを実現するために必要となる変更対象のファイルと変更内容です。
- 新たなビューを利用してデータを集計・可視化する
- 変更対象:モデルのファイル
- 変更内容:Explore の定義を追加・変更する
- 新たな抽出・集計の方法でデータを集計・可視化する
- 変更対象:ビューのファイル
- 変更内容:ディメンションやメジャーの定義を追加・変更する
これらの整理を参考に、実現したいユースケースに対して何を変更すべきであるかを理解してください。
LookerML プロジェクトの変更は、Looker が提供する IDE で行ないます。 まずは、サイドバーから、"Develop" > "wantedly" の順に進み、LookML プロジェクトを開きましょう。
LookML プロジェクトの変更を行なう場合、開発権限が必要になります。
LookML プロジェクトに変更を加えるには、開発モード (Development Mode) が有効になっている必要があります。 画面上部に青色のバナーが表示されているのが、開発モードであることの目印です。
Looker は Git を利用したバージョン管理を行ないます。 開発用のブランチの作成を行ない、LookML プロジェクトに変更を加える準備をしましょう。
Looker の IDE で、LookML プロジェクトの変更を行ないます。 モデルとビューのファイルの追加や変更を行ないます。
詳しい手順は、後述のデータモデリング手順を参考にしてください。
開発モードでは、LookML プロジェクトの変更内容を反映した結果を確認することができます。 Explore を用いて、期待するデータの抽出や集計ができるかを確認するのが一般的です。
Looker は、GitHub と連携しているので、Looker の IDE からコミットなどの Git の操作だけでなく、GitHub の PR を作成することも可能です。 変更を終えたら適切な粒度でコミットし、GitHub の PR を作成してください。
LookMLで不明瞭な点があれば @wantedly/bi をレビュアーに含めてください。 それ以外は各チームのドメイン知識のあるメンバーをレビュアーにしてください。
あとは、他の開発フローと同様に、コードレビューと指摘内容に対する修正を終え、開発用のブランチをマージしてください。
他の利用者が共有されたコンテンツ(ダッシュボードや Look)を閲覧する場合は、開発モードの影響を受けず、常に本番モード (Production Mode) の LookML プロジェクトを参照していることに注意してください。 開発 モードにおける LookML プロジェクトの変更を前提としたコンテンツの追加や変更を行なうと、他の利用者からはコンテンツでエラーが生じて内容を閲覧できないということが発生してしまいます。
他の利用者と共有されるコンテンツの追加や変更をする際は、必ず開発用のブランチをマージしてから行なうようにしましょう。
ここでは、スタースキーマを作成することを前提としてデータモデリング手順を説明します。
スタースキーマとは、データモデリングの代表的な手法のひとつです。 スタースキーマでは、ファクトテーブルとディメンションテーブルを組み合わせます。 各テーブルは以下のようなテーブルを指します。
- ファクトテーブル
- 関心対象となるイベントの発生ごとに1レコードで表現したデータ
- ディメンションテーブル
- 人や場所、物などの属性値を表現するデータ
以降は、具体例として、スカウトのファクトテーブルと、ユーザのディメンションテーブルを用いて、スタースキーマを作成することを想定して説明を続けます。
テーブルを参照できるように、ビューのファイルの作成と定義をすることから始めます。
ビューのファイルを新規で作成する最も簡単な方法は、テーブルの情報からビューを作成する方法です。 ビューのファイルを追加したいフォルダのメニュー > "Create View From Table" を選択し、テーブルを選択してビューのファイルを作成することができます。
作成されるビューのファイルには、参照するテーブルの指定、テーブルのすべてのカラムに対応するディメンションなどが含まれる LookML の記述が含まれます。
以下は、スカウトのテーブルを参照するファクトテーブルを作成した場合の例です。
view: scouts {
sql_table_name: `project.dataset.scouts` ;;
drill_fields: [id]
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension: user_id {
type: number
sql: ${TABLE}.user_id ;;
}
...
measure: count {
type: count
drill_fields: [id]
}
}
次に、定義したビューを用いて Explore の定義を行ないます。
モデルのファイルに新しく Explore の定義を追加するには、explore パラメータを用いて宣言を記述します。 多くの場合、Explore で利用するビューと同名の explore を追加します。 スタースキーマを作成することを前提とする場合は、ファクトテーブルを参照するビューと同名の explore を追加すると良いでしょう。
また、explore パラメータ内では、Explore の表示やフィルタの動作などを様々なパラメータを用いて指定することができます。 多くの場合、Explore で結合されるビューを join パラメータを用いて指定します。 スタースキーマを作成することを前提とする場合は、ディメンションテーブルを参照するビューを結合されるビューとして指定すると良いでしょう。
以下は、スカウトのファクトテーブルを参照するビューと同名の explore を追加する例です。 結合されるビューとして、ユーザのディメンションテーブルを参照するビューを指定します。
explore: scouts {
join: users {
relationship: many_to_one
sql_on: ${scouts.user_id} = ${users.id}
}
}
Looker では、Explore をもとにグラフなど、視覚的なレポートを作成し、それらをダッシュボードという形でまとめることができます。
最終更新 24d ago