[Looker入門] LookMLの用語と概念 #looker

LookMLはLooker Modeling Layerのことです。
2021.08.13

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

LookMLを開発するにあたって知っておきたい基礎の基礎、LookMLプロジェクトの構成やモデルとExploreの関わりをご紹介します。

LookML terms and concepts from Looker on Vimeo.

元ネタはこちらの動画です。さまざまなLookMLの概念の紹介を見てきましたが、こちらが一番よくまとめられていると感じました。

しかし、こちらの動画は全編英語のため本記事では日本語で噛み砕いてご紹介します。

LookML用語と概念

LookML terms and concepts より

一番シンプルなLookMLの構成図です。後で詳しく触れますが、LookMLプロジェクトを大枠にしてその中にモデルとビューがあります。モデルにはexploreとjoinが定義されていて、ビューにはディメンションとメジャーが定義されています。こちらの図にはLookMLダッシュボードがありますがオプショナルなので、必須ではありません。

LookMLプロジェクト

LookMLを開発する際に最初に作る箱をLookerではプロジェクトと呼びます。プロジェクトは複数のLookMLファイルで構成されており、主なものはモデルファイルとビューファイルです。

LookML terms and concepts より

このほかにもLookMLファイルがありますが、最低限必要なファイルはこの2種類のファイルです。

その他のLookMLプロジェクトファイルはこちらの公式ドキュメントで確認できます:Understanding other project files - 公式ドキュメント

モデル・モデルファイル

LookMLプロジェクトを構成するファイルの内の一つ、モデルファイルについてご説明します。

モデルファイルにはモデル全体に関わる設定を定義します。
最低限必要なものはexploreとデータベース接続の定義です。

LookML terms and concepts より

モデルファイルにはどのデータベースと接続するかを指定します。モデルファイルに指定できるデータベース接続は1つだけです。

モデルファイルがそのままLookMLのモデルオブジェクトとなるため、1モデル1データベース接続ということになります。

LookML terms and concepts より

1つのLookMLプロジェクトに複数のモデルを定義することができます。(1プロジェクトに複数のモデルファイルを保存することができます。)

LookML terms and concepts より

これの何が嬉しいかというと、Lookerではモデル単位でユーザーグループのアクセス権限を管理するので、モデルを切り離しておくことで1プロジェクトで複数のユーザーグループ向けの開発ができるようになります。プロジェクト間でファイルの共有はできないため、複数のユーザーグループにそれぞれ閲覧権限を渡さずに公開したい場合はプロジェクトを切り分けるのではなく、モデルを切り分けることでシンプルに実現できます。

この他モデルに定義するものはこちらの公式ドキュメントで確認できます:モデルパラメーター - 公式ドキュメント

explore/Explore

LookML terms and concepts より

モデルにexploreを定義すると、Exploreメニューに表示されます。

LookML terms and concepts より

Exploreはユーザーが欲しいデータにアクセスして、データを可視化する場所です。
画面左の項目を選択すると裏でSQLが生成される仕組みになっています。

LookML terms and concepts より

exploreはLookerが生成するSQLでFROM句になります。

ビュー・ビューファイル

LookMLプロジェクトを構成するファイルの内のもう一つ、ビューファイルについてご説明します。

ビューはデータベースのテーブルをLookMLオブジェクトにしたものです。データベースに物理的に存在しているものもあれば、Looker上に論理的に作成することもできます。

LookML terms and concepts より

exploreの定義にはビューが必要です。さらにjoinをすることでビューを結合することができます。(考え方はテーブル同時のjoinとほぼ同じです。)

ここで言うビューとはLookMLオブジェクトとしてのビューで、ビューファイルのことではありません。推奨ではありませんが、ビューファイルには複数のビューを定義することができます。

1つのビューファイルの中に複数のビューが存在してしまう例としてBigQyeryでUNNESTが必要なARRAY型やSTRUCT型でデータが入っているテーブルが挙げられます。このようなテーブルをLookerに取り込むと、一つのビューファイルに複数のビューが生成されます。

話が逸れてしまいましたが、exploreは最低一つ時には複数の結合されたテーブル(たち)で構成されています。

また、joinで定義されたビューはLookerが生成するSQLのJOIN句になります。

ディメンション

LookML terms and concepts より

ディメンションはテーブルの列をLookMLオブジェクトにしたものです。

LookML terms and concepts より

ビュー同様データベースのテーブルに物理的に存在しているものもあれば、Looker上に論理的に作成することもできます。

LookML terms and concepts より

ディメンションはLookerの生成するSQLのGROUP BY句とSELECT句になります。

メジャー

メジャーは集約計算を定義します。

LookML terms and concepts より

ExcelでもおなじみのCOUNT、SUM、MIN、MAXをはじめとした計算や、Lookerに接続しているデータベースがサポートしている計算を定義することができます。

LookML terms and concepts より

他のメジャー同士の計算も行うことができます。
この時に可能なのは足し算引き算掛け算割り算といった計算で、集約計算を行ったメジャーに対して同じビューで集約計算のメジャーを書くことはできません。Nested measureというエラーの原因になります。

Exploreにおけるディメンションとメジャー

LookML terms and concepts より

ビューで定義されたディメンションとメジャーは、フィールドピッカーと呼ばれるExplore画面の左側に表示されます。

LookML terms and concepts より

ユーザーはそこから必要な項目(フィールド)を選択して欲しい結果を得ます。フィールド(ディメンションとメジャーのこと)をpick(選ぶ)する場所なのでフィールドピッカーと呼ばれます。

マニフェストファイル

LookML terms and concepts より

プロジェクト全体に関する設定を定義する場所です。1プロジェクトに1つだけマニフェストファイルを作成することができます。

マニフェストファイルで定義できるパラメータはこちらの公式ドキュメントで確認できます:プロジェクトマニフェストパラメーター

LookMLダッシュボードファイル

LookML terms and concepts より

LookMLダッシュボードファイルはLookMLプロジェクトに紐づいたバージョンコントロールができるダッシュボードのファイルです。YAMLベースでLookMLで開発者によって定義されます。

派生テーブル

ビュー/ビューファイルで紹介した、Looker上に論理的に定義できるテーブルを派生テーブルと呼びます。

LookML terms and concepts より

具体的には、SQLの結果セットをテーブルとして扱います。

LookML terms and concepts より

派生テーブルはSQLで言うところのマテリアライズドビュー、common teble expressions(WITH句)、サブクエリの役割を果たします。

メジャーの項目で、集約計算を行ったメジャーに対し同じビュー内では集約計算を行うことはできないとお伝えしました。こういったケースで派生テーブルを使用します。元のビューの集約計算も新たに作成した派生テーブル上ではディメンションになるので、そのディメンションに対してメジャーで集約計算を行います。

LookML terms and concepts より

通常のビューと違い、sql_table_nameパラメータを定義せず代わりにderived_tableパラメータを定義します。

LookML terms and concepts より

他のビューと同様にjoinすることができます。

まとめ

LookMLプロジェクトの成り立ちをご理解いただけたでしょうか?

LookMLの開発はデータベースエンジニア的でありながら、ユーザーの触るExploreの開発も含まれるためソフトウェアエンジニア的な側面も併せ持ちます。

この記事がLookML開発に少しでも役立てば幸いです。