LookML は、Looker Modeling Language の略です。セマンティック データモデルを作成するために Looker で使用される言語です。LookML を使用して、SQL データベース内のディメンション、集計、計算、およびデータの関係を記述できます。Looker は、LookML で記述されたモデルを使用して、特定のデータベースに対する SQL クエリを作成します。
LookML は make のような依存関係言語で、C や Ruby といった命令型言語とは反対の性質を持ちます。LookMLはデータモデリングのために定義済みのデータタイプと構文を提供します。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 の書式設定された結果がユーザーに返されます。ユーザーは、結果を可視化して分析情報を生成できます。
プロジェクト内の LookML の基本的な要素と、それらがどのように関係するかの詳細については、LookML の用語とコンセプトをご覧ください。
ユーザーに表示される内容
プロジェクトの設定方法とファイルの特定の内容によって、ユーザーに表示される内容と Looker を操作する方法が決まります。
- 左側のナビゲーション パネルの 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 の学習環境にアクセスする
- Looker を使用してデータのクエリや探索を行う方法
- LookML を始める前に SQL の基本を復習
- LookML の基礎を知る
- Looker のトレーニングを検討
Looker の学習環境にアクセスする
Google Cloud Skills Boost のコースをご覧ください。
Looker を使用してデータのクエリや探索を行う方法
Looker でデータを探索する方法を知ることは、LookML でデータをモデリングする際にとても役立ちます。Looker を使用したデータのクエリ、フィルタリング、ドリルダウンに詳しくない場合は、次のリソースをおすすめします。
- まず、データの取得とチャート化のチュートリアルをご覧ください。各ページの下部にあるリンクは、Lookerで最も重要な一連の機能につながっています。
- Exploring Data with Looker の Skills Boost クエストでは、データ探索の基礎を学びます。
LookML を始める前に SQL の基本を復習
LookMLを書くには、SQLクエリを理解している必要があります。SQL の達人である必要はありませんし、初心者でも強力な Looker モデルを作成できます。しかし、一般的に、LookMLへの習熟に伴い、SQLの深い知識がより役立つようになります。
SQLの復習が必要な方に、お勧めのリソースをこちらに紹介します。
- Khan Academy の SQL レッスン: インタラクティブな SQL チュートリアル
- SQLZoo のインタラクティブ SQL チュートリアル
- Sams Teach Yourself SQL in 10 Minutes(Ben Forta 著)
LookML の基礎を知る
これらのリソースにより、LookMLの知識を手っ取り早く習得できます。学習アカウントを使用して、異なるデザインパターンを実際に試してみましょう。
- LookML の用語とコンセプトから始める。
- Looker の SQL 生成の仕組みと 高度な LookML コンセプトに進む。
- LookML と SQL をよく理解したら、派生テーブルやテンプレート化されたフィルタなどの高度な機能をご覧ください。
LookML の基本を理解したら、さまざまなタイプの LookML パラメータの概要について次のページを確認します。