extends による LookML コードのモジュール化

ラボ 1時間 universal_currency_alt 無料 show_chart 中級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

GSP936

Google Cloud セルフペース ラボのロゴ

概要

Looker は Google Cloud で利用できる最新のデータ プラットフォームで、インタラクティブにデータを分析して可視化できます。LookML のデベロッパーは、新しいフィールド、テーブル、ビュー、Explore を作成し、データをカスタマイズして編成することによって、ビジネス ユーザーが使用するデータをキュレートします。

このラボでは、ビューと Explore を拡張して LookML コードをモジュール化する方法を学びます。

前提条件

LookML に関する知識が必要です。このラボを開始する前に、「Understanding LookML in Looker」を修了することをおすすめします。

学習内容

  • extends で LookML コードをモジュール化し、簡単に再利用する方法を説明する。
  • 別のビューで定義された列を統合して、ビューを拡張する。
  • 別の Explore で定義された結合を統合して、Explore を拡張する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボの時間は制限されており、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントに追加料金が発生する可能性があります。

ラボを開始して Looker にログインする方法

  1. 準備ができたら、[ラボを開始] をクリックします。

    [ラボの詳細] ペインに、このラボで使用する一時的な認証情報が表示されます。

    ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。

    [ラボの詳細] ペインに表示されているラボの認証情報を確認してください(このラボの Looker インスタンスにログインする際に使用します)。

    注: 他の認証情報を使用すると、エラーが表示されたり料金が発生したりします
  2. [Open Looker] をクリックします。

  3. 提供されたユーザー名とパスワードを、[Email] フィールドと [Password] フィールドに入力します。

    ユーザー名:

    {{{looker.developer_username | Username}}}

    パスワード:

    {{{looker.developer_password | Password}}} 重要: このページの [ラボの詳細] ペインに表示されている認証情報を使用する必要があります。Google Cloud Skills Boost の認証情報は使用しないでください。ご自身の Looker アカウントをお持ちの場合でも、このラボでは使用しないでください。
  4. [Log In] をクリックします。

    正常にログインすると、このラボで使用する Looker インスタンスが表示されます。

LookML の extends とは

extends を使用すると、LookML オブジェクトのコピーを作成してコードをモジュール化し、そのコピーを他の LookML オブジェクトに統合して、元の LookML オブジェクトとは別に変更できます。Looker では、ビュー、Explore、LookML で定義されたダッシュボードを拡張できます。コードをモジュール化することで、コードの断片をモジュールまたはユニットとして扱い、それらを基にモデルを拡張できます。

extends を使用するメリット

挙げられている理由: DRY コードを記述する、変更が簡単 / 迅速になる、一貫性、さまざまなフィールド セットの管理が簡単になる

extends は、DRY(Don’t Repeat Yourself)コードの記述に役立ちます。既存のオブジェクトとコードのセクションをコピーすることで、ロジックの追加や変更が簡単になります。これは、組織とユースケースの拡大に合わせてモデルをスケーリングするうえで重要です。また、コードを常に手動で書き換える必要がないため、モデルの一貫性も最大限に高められます。さらに、さまざまなユーザー グループのフィールド アクセスを簡単に管理できるため、スケーラビリティの確保にもつながります。

LookML ビューの extends

前述のとおり、拡張できるオブジェクトの一つに LookML ビューがあります。拡張は一般的に、フィールドを追加したり、既存のフィールドのロジックを更新したりするために行われます。もう一つのユースケースは、sql_table_name パラメータで指定されたデータベース テーブルを変更することです。

ビューにフィールドを追加する場合とビューのテーブルを変更する場合のフロー図

LookML の Explore の extends

拡張できるもう一つのオブジェクトは Explore です。特に正規化されたデータベース アーキテクチャでは、必ず結合しなければならないテーブルが複数存在する場合があります。同じ結合を繰り返し書き直すことを避けるために、すでに結合されている「ベース」Explore を作成し、それを拡張して、さらに多くのビューを結合する必要がある追加の Explore を作成することができます。または、同じ結合ビューのセットが必要でも、新しい Explore が別のベースビューに基づく場合もあります。

Explore にビューを追加する場合と、Explore のベースビューを変更する場合のフロー図

拡張を行うための 4 つの手順

手順にはコピー、マージ、競合の解決、完了が含まれます

Explore の「舞台裏」:

  1. Looker が、拡張される LookML オブジェクトのコピーを作成します。
  2. コピー、つまり拡張オブジェクトは、新しい定義または変更された定義とマージされます。
  3. 競合が検出された場合(定義を変更した場合に発生)、拡張オブジェクトが制御します。
  4. 拡張オブジェクトは、他のオブジェクトと同じように LookML モデルで使用できます。
注: extends の実装は簡単なプロセスですが、詳細を把握しておくと、予期しない動作が発生した場合に役立ちます。

タスク 1. ビューを拡張して別のビューから列を追加する

複数のビューに同じコードをコピーして貼り付ける代わりに、よく使用するディメンションとメジャーの定義を含む一元的なビューを作成できます。その後、extends を使用してディメンションとメジャーを複数のビューに統合できます。extends に特定のパラメータを使用するだけで、Looker でコピー元とするビューを特定できます。

ビジネスの観点から見ると、これは非常に実用的です。一元的なコードベースを複数のチームで再利用し、コアコードを拡張してそれぞれのニーズに合わせてカスタマイズできるからです。ロケーション ディメンションを抽象化するメリットは、一度更新すれば、そのロケーションのビューから拡張されたすべてのビューに更新が伝播されることです。

このタスクでは、users ビューや events ビューなどの他のビューを拡張することで再利用できるロケーション ディメンション(city、country など)を含む、新しいビューを作成します。

新しいビューを作成する

  1. 切り替えボタンをクリックして Development Mode に切り替えます。

  2. [開発] タブで、qwiklabs-ecommerce という LookML プロジェクトを選択します。

  3. [ファイル ブラウザ] の横にある + アイコンをクリックし、[ビューを作成] を選択します。

  4. ビューに location という名前を付け、views フォルダにドラッグして、次のコードを追加します。

view: location { extension: required dimension: city { type: string sql: ${TABLE}.city ;; } dimension: state { type: string sql: ${TABLE}.state ;; map_layer_name: us_states } dimension: zip { type: zipcode sql: ${TABLE}.zip ;; } dimension: country { type: string map_layer_name: countries sql: ${TABLE}.country ;; } dimension: latitude { type: number sql: ${TABLE}.latitude ;; } dimension: longitude { type: number sql: ${TABLE}.longitude ;; } }

このビューファイルには、他のビューで再利用するディメンションの定義が含まれています(citycountrylatitudelongitudestatezip)。

2 行目(extension: required)は、このビューを「他のビューに結合できない」ことを意味します。そのため、ユーザーには表示されません。このビューを使用するには、extends パラメータを使用して別のビューに統合する必要があります。これについては次のセクションで説明します。

なお、他のビューとは異なり、データの使用元テーブルを特定するために、ビュー定義にパラメータ sql_table_name を含める必要はありません。代わりに、このビューでは、次のセクションで拡張するビューで指定されたテーブルが使用されます。

  1. [変更内容を保存] をクリックし、[LookML を検証] をクリックします。
    LookML エラーは見つからず、ファイルは次のようになっているはずです。

更新された location.view ファイルが開いており、31 行のコードが含まれています

extends を追加する

  1. users.view ファイルを開きます。

  2. ファイルの先頭(1 行目)に新しい行として次のコードを追加します。このコードは、users ビューが location ビューを使用して拡張されていることを示します。

include: location.view
  1. 3 行目の sql_table_name の上に、次のコードを追加します。
extends: [location] 注: extends が追加されているため、sql_table_name パラメータは、ファイル内の既存のオブジェクトと、extend を介して geography から追加されるオブジェクトの両方について、データソースとして使用するテーブルを特定します。
  1. citycountrylatitudelongitudestatezip の既存のディメンション定義を削除します(ファイル内の既存の順序)。これらのディメンションは、users.view ファイルで明示的に定義されるのではなく、location.view からの拡張によって統合されます。

  2. [変更内容を保存] をクリックし、[LookML を検証] をクリックします。

  3. event.view ファイルを開きます。

  4. ファイルの先頭(1 行目)に新しい行として次のコードを追加します。

include: location.view
  1. 3 行目の sql_table_name の上に、次のコードを追加します。
extends: [location]
  1. users ビューの場合と同様に、citycountrylatitudelongitudestatezip の既存のディメンション定義を削除します。

  2. [変更内容を保存] をクリックし、[LookML を検証] をクリックします。

ファイルは次のようになります。

更新された events.view ファイルが開いており、25 行のコードが含まれています

Order Items Explore で、Users と Events の拡張ビューをテストする

  1. Order Items の [Explore] ページに移動します。

  2. Users ビューから、CityCountryLatitudeLongitudeStateZip の各ディメンションを選択します。

  3. [実行] をクリックします。

これらのディメンション(city、country、latitude、longitude、state、zip)の定義は users.view ファイルから削除しましたが、location.view ファイルから extend を使用して users.view ファイルに追加されているため、これらのディメンションの定義を表示、使用できます。

users.view ファイルと location.view ファイルの列が表示された Order Items Explore の可視化

  1. Events Explore に移動します。

  2. Events ビューから、CityCountryLatitudeLongitudeStateZip の各ディメンションを選択します。

events.view ファイルのディメンションが表示された Order Items Explore の可視化

これらのディメンションの定義は events.view ファイルから削除しましたが、extend を使用して events.view ファイルに追加されているため、これらのディメンションの定義を表示、使用できます。

  1. Looker IDE で events.view ファイルに戻ります。

変更を commit して本番環境にデプロイする

  1. [LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。

  2. commit メッセージを追加して、[Commit] をクリックします。

  3. 最後に、[本番環境にデプロイ] をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ビューを拡張して別のビューから列を追加する

タスク 2. Explore を拡張して別の Explore から結合を追加する

モデルファイル内の複数の Explore に同じ結合をコピーして貼り付ける代わりに、Explore 全体で最もよく使用する結合を含む 1 つのベース Explore を作成できます。その後、extends を使用してベース Explore を再利用し、モデルファイルで定義された他の Explore を定義、カスタマイズできます。

一般的なビジネス ユースケースとしては、組織内の特定のユーザー グループやチーム向けに他の Explore を作成するために使用できる、1 つのコア Explore を作成することが挙げられます。

このセクションでは、複数のビジネスチームが必要とするすべてのビューの結合を含む 1 つのベース Explore を作成し、extends を使用してそのベース Explore を複数のチームで再利用、カスタマイズします。

  1. training_ecommerce.model ファイルに移動します。

  2. order_items Explore の定義(43 行目付近)の後で、次のコードを使用して base_events という新しいベース Explore を作成します。

explore: base_events { extension: required join: event_session_facts { type: left_outer sql_on: ${events.session_id} = ${event_session_facts.session_id} ;; relationship: many_to_one } join: users { type: left_outer sql_on: ${events.user_id} = ${users.id} ;; relationship: many_to_one } }

ここでも、extension: required の行は、この Explore がユーザーに表示されないことを意味します。ファイルは次のようになります。

training.ecommerce.model ファイルが開いており、追加された base_events Explore コードの行がハイライト表示されています

次に、events Explore の既存の定義を変更して、base_events のビューで拡張します。

  1. events Explore から、event_session_factsusers の既存の結合を削除します。

これらの結合ビューは、次のステップで追加するコードを介して base_events Explore から統合されます。event_session_funnel の結合定義は、特定のユーザー群に合わせてこの Explore をカスタマイズするために残されています。ファイルは次のようになります。

training.ecommerce.model ファイルが開いており、更新された 43~56 行がハイライト表示されています

  1. events Explore の定義で、最初の行の下に次のコードを追加します。
description: "Start here for Event analysis" fields: [ALL_FIELDS*] from: events view_name: events extends: [base_events] 注: この新しい行で Explore 情報ボタンの説明が提供されます。どのビューファイルからどのフィールドを含めるのか(すべてのフィールド)や、events Explore を拡張するためにどの Explore を使用するのかを指定しています。

events Explore の定義は最終的に次のようになります。

events Explore の行が更新された training.ecommerce.model ファイル

注: fromview_name はどちらも events ビューを指していますが、両方を含めているのはなぜでしょうか?from では、events という元のビュー(ビューのエイリアス名や拡張ビューではない)を使用していることを確認します。view_name はビューのファイル名で、エイリアスなどになる可能性があります。
  1. 変更した events Explore の定義の下に conversions という新しい Explore を追加するには、次のコードを使用します。
explore: conversions { description: "Start here for Conversion Analysis" fields: [ALL_FIELDS*, -order_items.total_revenue_from_completed_orders] from: events view_name: events extends: [base_events] join: order_items { type: left_outer sql_on: ${users.id} = ${order_items.user_id} ;; relationship: many_to_many } }

2~6 行目で Explore 情報ボタンの説明が提供されます。どのビューファイルからどのフィールドを含めるのか(Order Items ビューの total_revenue_from_completed_orders メジャーを除くすべてのフィールド)や、この Explore を拡張するためにどの Explore を使用するのか(events Explore の拡張に使用したのと同じ base_events Explore)を指定しています。

  1. [変更内容を保存] をクリックし、[LookML を検証] をクリックします。
    LookML エラーは見つからず、ファイルは次のようになっているはずです。

conversions Explore のコード行が追加された training.ecommerce.model ファイル

新しい Explore をテストしましょう。各 Explore(EventsConversions)に移動し、含まれているビューを確認します。Explore は核となる一連のビューを共有していますが、追加のビューでカスタマイズされているため、それぞれ異なるユーザー オーディエンスに対応しています。

  1. Events Explore に移動します。この Explore には、ベース Explore(EventsEvent Session FactsUsers)の結合されたビューと、Event Session Funnel ビューが含まれています。

Explore Events ページの [All Fields] タブの下に、[Custom Fields]、[Event Session Facts]、[Events Session Funnel]、[Events]、[Users] が表示されています

  1. 説明を確認するには、[Events] の横にある情報ボタン(情報ボタン)にポインタを合わせます。

  2. Conversions Explore に移動します。この Explore には、ベース Explore(EventsEvent Session FactsUsers)の結合されたビューと、Order Items ビューが含まれています。

Conversations ページの [All Fields] タブの下に、[Custom Fields]、[Event Session Facts]、[Events]、[Order Items]、[Users] が表示されています

  1. 説明を確認するには、[Conversions] の横にある情報ボタン(情報ボタン)にポインタを合わせます。

  2. Order Items ビューのメジャーを確認します。total_revenue_from_completed_orders は表示されていません。

  3. Looker IDE の training_ecommerce.model ファイルに戻ります。

変更を commit して本番環境にデプロイする

  1. [LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。

  2. commit メッセージを追加して、[Commit] をクリックします。

  3. 最後に、[本番環境にデプロイ] をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Explore を拡張して別の Explore から結合を追加する

お疲れさまでした

このラボでは、users ビューと events ビューを拡張してロケーション ディメンションを含む新しいビューを作成し、複数のビューの結合を含むベース Explore を作成しました。また、extends を使用して、複数のチームとユーザーのためにベース Explore を再利用、カスタマイズしました。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 4 月 22 日

ラボの最終テスト日: 2023 年 9 月 6 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。