Extend a view to add columns from another view

進行状況を確認

/ 50

Extend an Explore to add joins from another Explore

進行状況を確認

/ 50

このラボでは、学習をサポートする 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 を使用してコードをモジュール化することにより、ひとかたまりのコードをモジュールまたはユニットとして扱い、それらをベースにモデルを拡張していくことが可能になります。

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 パラメータは、ファイル内の既存のオブジェクトと、extends を介して geography から追加されるオブジェクトの両方について、データソースとして使用するテーブルを指定します。
  1. citycountrylatitudelongitudestatezip(これはファイル内の既存の順序です)の既存のディメンション定義を削除します。これらのディメンションは、users.view ファイルで明示的に定義されるのではなく、location.view からの extends を介して統合されます。

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

  3. events.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 ファイルから削除しましたが、extends を介して location.view ファイルから users.view ファイルに追加されているため、これらのディメンションの定義は引き続き表示、使用できます。

users.view ファイルと location.view ファイルの列が表示された Order Items Explore のビジュアリゼーション

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

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

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

events.view ファイルのディメンションが表示された Order Items Explore のビジュアリゼーション

再び、これらのディメンションの定義を events.view ファイルから削除しましたが、extends を使用して 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 を定義、カスタマイズできます。

一般的なビジネス ユースケースとしては、1 つのコア Explore を作成し、それを使用して組織内の特定のユーザー グループやチーム向けに別の 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 は核となる一連のビューを共有していますが、追加のビューでカスタマイズされているため、それぞれ異なるユーザー オーディエンスに対応しています。

注: [Explore] に [Conversions] が表示されない場合は、[Explore] ページを更新してください。
  1. Events Explore に移動します。この Explore には、ベース Explore(EventsEvent Session FactsUsers)の結合されたビューと、Event Session Funnel ビューが含まれています。

[すべてのフィールド] タブの下に、[Custom Fields]、[Event Session Facts]、[Events Session Funnel]、[Events]、[Users] が表示されている、[Events] Explore ページ

  1. 説明を確認するには、[Events] プルダウンをクリックし、関連する項目の横にある情報情報ボタン)にカーソルを合わせて詳細を表示します。

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

[すべてのフィールド] タブの下に、[Custom Fields]、[Event Session Facts]、[Events]、[Order Items]、[Users] が表示されている、[Conversations] ページ

  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 テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2026 年 5 月 18 日

ラボの最終テスト日: 2026 年 5 月 18 日

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

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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