LookML(Looker モデリング言語の略)は、Looker でセマンティック データモデルを作成するために使用される言語です。LookML を使用して、SQL データベース内のディメンション、集計、計算、およびデータの関係を記述できます。Looker は、LookML で記述されたモデルを使用して、特定のデータベースに対する SQL クエリを作成します。
LookML は make のような依存関係言語で、C や Ruby といった命令型言語とは反対の性質を持ちます。LookMLはデータモデリングのために定義済みのデータタイプと構文を提供します。LookML を理解するためにプログラミング言語の経験は必要ありません。LookML は個々の SQL ダイアレクトには依存せず、SQL 式をカプセル化してあらゆる SQL 実装をサポートします。
データ分析のために、LookML では DRY 原則(Don't Repeat Yourself)に基づくスタイルを促進しています。つまり、ある箇所に 1 回 SQL 式を書けば、Looker がこのコードを使ってその場に応じた SQL クエリを繰り返し生成していきます。ビジネス ユーザーは、その結果を使用して Looker で複雑なクエリを構築できます。SQL 構文の複雑さに煩わされることなく、必要なコンテンツだけに集中できます。
LookMLプロジェクト
LookML はプロジェクトで定義されています。LookML プロジェクトは、少なくともモデルとビューファイル、必要に応じて他の種類のファイルを含むファイルのコレクションです。これらのファイルは通常、Git リポジトリを介してバージョン管理されます。モデルファイルには、プロジェクトで使用するテーブルと、テーブルの結合方法に関する情報が含まれています。ビューファイルは、各テーブルに関する情報(結合が許す場合は複数のテーブルにわたる情報)の計算方法を表します。
LookMLは構造をコンテンツから切り離します。そのため、クエリの構造(テーブル間の結合様式)はクエリのコンテンツ(アクセスすべき列、派生フィールド、計算すべき集計関数、適用すべきフィルタリング条件式)とは独立しています。
Looker クエリは LookML プロジェクト ファイルに基づいています。データ アナリストは LookML を使用して、分析対象のデータのデータ構造とビジネスルールを定義するデータモデルを作成、維持します。Looker SQL 生成ツールは、LookML を SQL に変換します。これにより、ビジネス ユーザーは LookML や SQL を記述しなくてもクエリを実行できます。
ビジネス ユーザーは、Looker クエリビルダーまたは Explore インターフェースを使用して、Looker アナリストが定義したデータモデルに基づくクエリを作成します。ユーザーは、ディメンション、メジャー、フィルタを選択して、独自の質問に基づくカスタムクエリを作成し、独自のインサイトを生成できます。
ユーザーがクエリを作成すると、そのクエリは Looker SQL 生成ツールに送信され、SQL に変換されます。SQL クエリがデータベースに対して実行され、Looker は形式設定された結果を Explore インターフェースでユーザーに返します。ユーザーは結果を可視化して分析情報を生成できます。
プロジェクト内の基本的な LookML 要素とそれらの相互関係の詳細については、LookML の用語とコンセプトをご覧ください。
ユーザーに表示される内容
プロジェクトの設定方法とファイルの具体的な内容によって、ユーザーに表示される内容と、ユーザーが Looker を操作できる方法が決まります。
- 左側のナビゲーション パネルの Explore パネルは、モデル名で整理されています。各モデル名の下には、そのモデルで定義されている使用可能な Explore が一覧表示されます。
- ユーザーは特定の Explore を検索できます。
デベロッパーは Explore の説明を定義できます。ユーザーは [Explore] メニューで Explore 名にカーソルを合わせることで、説明を表示できます。
フィールド ピッカーのペインは、ビュー名で構成されます。各ビュー名の下には、そのビューに含まれるテーブルから使用可能なフィールドが一覧表示されます。ほとんどのビューには、ディメンションとメジャーの両方が表示されます。この例では、ビューファイルで定義された [Returned Date] ディメンション グループから [Month] ディメンションを選択します。
ユーザーは、クエリのベースとなる複数の指標を選択できます。
ユーザーは、フィールド ピッカー ペインで、フィルタやピボットなどのオプションを適用できます。
ユーザーはクエリの語句を絞り込むことができます。
ユーザーは、クエリの結果に適用するビジュアリゼーション タイプを選択できます。
この Explore を実行すると、過去 1 年間に返された注文の総販売価格と総利益に関するデータテーブルおよびビジュアリゼーションの両方を返す SQL クエリが生成されます。
コードサンプル
次のコードサンプルでは、モデルファイル(ecommercestore.model.lkml
)と 2 つのビューファイル(orders.view.lkml
と customers.view.lkml
)を含む、e コマースストア向けの最小の LookML プロジェクトを示します。
######################################
# FILE: ecommercestore.model.lkml #
# Define the explores and join logic #
######################################
connection: order_database
include: "*.view.lkml"
explore: orders {
join: customers {
sql_on: ${orders.customer_id} = ${customers.id} ;;
}
}
##########################################################
# FILE: orders.view.lkml #
# Define the dimensions and measures for the ORDERS view #
##########################################################
view: orders {
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension: customer_id { # field: orders.customer_id
sql: ${TABLE}.customer_id ;;
}
dimension: amount { # field: orders.amount
type: number
value_format: "0.00"
sql: ${TABLE}.amount ;;
}
dimension_group: created { # generates fields:
type: time # orders.created_time, orders.created_date
timeframes: [time, date, week, month] # orders.created_week, orders.created_month
sql: ${TABLE}.created_at ;;
}
measure: count { # field: orders.count
type: count # creates a sql COUNT(*)
drill_fields: [drill_set*] # list of fields to show when someone clicks 'ORDERS Count'
}
measure: total_amount {
type: sum
sql: ${amount} ;;
}
set: drill_set {
fields: [id, created_time, customers.name, amount]
}
}
#############################################################
# FILE: customers.view.lkml #
# Define the dimensions and measures for the CUSTOMERS view #
#############################################################
view: customers {
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension: city { # field: customers.city
sql: ${TABLE}.city ;;
}
dimension: state { # field: customers.state
sql: ${TABLE}.state ;;
}
dimension: name {
sql: CONCAT(${TABLE}.firstname, " ", ${TABLE}.lastname) ;;
}
measure: count { # field: customers.count
type: count # creates a sql COUNT(*)
drill_fields: [drill_set*] # fields to show when someone clicks 'CUSTOMERS Count'
}
set: drill_set { # set: customers.drill_set
fields: [id, state, orders.count] # list of fields to show when someone clicks 'CUSTOMERS Count'
}
}
参考情報
LookML 開発が初めての方は、次のセクションで説明するリソースを使用して効率よく学習することを検討してください。
Looker の学習環境にアクセスする
Google Cloud Skills Boost のコースを確認する。
Looker を使用してデータのクエリや探索を行う方法
Looker でデータを探索する方法を知ることは、LookML でデータをモデリングする際にとても役立ちます。Looker を使用したデータのクエリ、フィルタリング、ドリルダウンに詳しくない場合は、次のリソースをおすすめします。
- まず、データの取得とチャート化のチュートリアルをご覧ください。各ページの下部にあるリンクは、Lookerで最も重要な一連の機能につながっています。
- Looker でのデータの分析と可視化の Skills Boost のクエストでは、データ探索の基礎を学びます。
LookML を始める前に SQL の基本を復習
LookMLを書くには、SQLクエリを理解している必要があります。SQL の専門家である必要はありませんし、初心者でも強力な Looker モデルを作成できます。しかし、一般的に、LookMLへの習熟に伴い、SQLの深い知識がより役立つようになります。
SQLの復習が必要な方に、お勧めのリソースをこちらに紹介します。
- Khan Academy の SQL レッスン: インタラクティブな SQL チュートリアル
- SQLZoo インタラクティブ SQL チュートリアル
- Ben Forta による書籍「Sams Teach Yourself SQL in 10 Minutes」
LookML の基礎を知る
これらのリソースにより、LookMLの知識を手っ取り早く習得できます。学習アカウントを使用して、異なるデザインパターンを実際に試してみましょう。
- LookML の用語とコンセプトから始める。
- Looker の SQL 生成の仕組みと 高度な LookML コンセプトに進む。
- LookML と SQL をよく理解したら、派生テーブルやテンプレート化されたフィルタなどの高度な機能をご覧ください。
LookML の基本を学んだら、次のページでさまざまなタイプの LookML パラメーターの概要を確認してください。