LookMLの紹介

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 の書式設定された結果がユーザーに返されます。ユーザーは、結果を可視化して分析情報を生成できます。

プロジェクト内の LookML の基本的な要素と、それらがどのように関係するかの詳細については、LookML の用語とコンセプトをご覧ください。

ユーザーに表示される内容

プロジェクトの設定方法とファイルの特定の内容によって、ユーザーに表示される内容と Looker を操作する方法が決まります。

  1. 左側のナビゲーション パネルの Explore パネルは、モデル名で整理されています。 各モデル名の下には、そのモデルで定義されている使用可能な Explore のリストが表示されます。
  2. ユーザーは特定の Explore を検索できます。
  3. デベロッパーは Explore の説明を定義できます。ユーザーが [Explore] メニューの Explore 名にカーソルを合わせると、この説明を表示できます。

  4. フィールド ピッカーのペインは、ビュー名で構成されます。各ビュー名の下には、そのビューに含まれるテーブルから使用可能なフィールドが一覧表示されます。ほとんどのビューには、ディメンションメジャーの両方が表示されます。この例では、ビューファイルで定義された [Returned Date] ディメンション グループから [Month] ディメンションを選択します。

  5. ユーザーは、クエリのベースとなる複数のメジャーを選択できます。

  6. ユーザーは、フィールド ピッカー ペインで、フィルタやピボットなどのオプションを適用できます。

  7. ユーザーはクエリの語句を絞り込むことができます。

  8. ユーザーは、クエリの結果に適用するビジュアリゼーション タイプを選択できます。

  9. この Explore を実行すると、過去 1 年間に返された注文の総販売価格と総利益に関するデータテーブルおよびビジュアリゼーションの両方を返す SQL クエリが生成されます。

コードサンプル

次のサンプルコードは、e コマースストアの最小 LookML プロジェクトを示しています。このファイルには、モデルファイル ecommercestore.model.lkml と 2 つのビューファイル orders.view.lkml および customers.view.lkml があります。

######################################
# 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 を使用したデータのクエリ、フィルタリング、ドリルダウンに詳しくない場合は、次のリソースをおすすめします。

LookML を始める前に SQL の基本を復習

LookMLを書くには、SQLクエリを理解している必要があります。SQL の専門家である必要はありませんし、初心者でも強力な Looker モデルを作成できます。しかし、一般的に、LookMLへの習熟に伴い、SQLの深い知識がより役立つようになります。

SQLの復習が必要な方に、お勧めのリソースをこちらに紹介します。

LookML の基礎を知る

これらのリソースにより、LookMLの知識を手っ取り早く習得できます。学習アカウントを使用して、異なるデザインパターンを実際に試してみましょう。

LookML の基本を学習したら、さまざまなタイプの LookML パラメータの概要については、次のページをご覧ください。