LookML と Liquid を使用して動的な SQL 派生テーブルを作成する

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

GSP932

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

概要

Looker は Google Cloud で利用できる最新のデータ プラットフォームで、インタラクティブにデータを分析して可視化できます。Looker を使用すると、詳細なデータ分析、さまざまなデータソース間での分析情報の統合、実用的なデータドリブン ワークフローの構築、独自のデータ アプリケーションの作成を行うことができます。

このラボでは、動的な値を生成して複数のユースケースに対応するために SQL 派生テーブルを作成および更新する方法を学びます。

演習内容

  • 複数のユースケースに対応する SQL 派生テーブルを作成する
  • Liquid でテンプレート フィルタを使用して動的な値を生成するように SQL 派生テーブルを更新する
  • ビジネス ユーザーが動的な SQL 派生テーブルを活用して複雑な問いに答える方法を理解する

前提条件

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

設定と要件

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

こちらの説明をお読みください。ラボの時間は制限されており、一時停止することはできません。タイマーは、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 インスタンスが表示されます。

タスク 1. 複数のユースケースに対応する単一の SQL 派生テーブルを作成する

LookML で派生テーブルを定義するには、SQL クエリを使用して SQL の派生テーブルを定義するか、Explore クエリを使用してネイティブ派生テーブルを定義します。SQL の派生テーブルを使用することで、SQL 開発者が理解しやすくなり、Looker で派生テーブルを簡単に使い始めることができます。

このタスクでは、顧客の行動に関する次のような複数の問いに柔軟に対応できる user_facts という SQL 派生テーブルを作成します。

  • 米国の各州におけるすべての顧客の平均ライフタイム収益と平均ライフタイム注文数は?
  • 顧客の初回注文日と最終注文日、合計ライフタイム収益、合計ライフタイム注文数は?

SQL クエリを使用して新しい派生テーブルを定義する

  1. まず、Looker のユーザー インターフェースの左下にある切り替えボタンをクリックして Development Mode に切り替えます。
  1. [Develop] タブをクリックし、[SQL Runner] をクリックします。

  2. [SQL Query] ウィンドウで、次のクエリを追加します。

SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id LIMIT 10

この例では、user_id を選択し、そのユーザーのライフタイム注文数をカウントした後、価格を合計してユーザーのライフタイム収益を算出するクエリが必要です。また、created_at 列の最小値と最大値をそれぞれ初回注文日と最終注文日として判別します。

GROUP BY 句を使用して結果を user_id でグループ化します。クエリが適切に機能していることを確かめるには一部のレコードを確認すればよいので、返される結果を LIMIT 句を使用して限定します。

  1. [Run] をクリックすると、クエリの結果が表示されます。

10 行のデータが表示された結果テーブル

この例では、ユーザー ID、ライフタイム注文数、ユーザーから得られたライフタイム収益、初回と最終の注文日が返されていることがわかります。

このテスト中に返されるデータの量を減らすために、LIMIT 句を使用していることに注目してください。この後のステップで SQL の派生テーブルに対する新しいビューファイルを作成するときには、LIMIT 句を削除します。

SQL の派生テーブルに対する新しいビューファイルを作成する

  1. ページ右上の [Run] の横にある設定アイコン(設定の歯車アイコン)をクリックし、[Add to Project] を選択します。

  2. [Project] で qwiklabs-ecommerce を選択します。

  3. [View Name] に「user_facts」と入力します。

  4. [Add] をクリックします。

Looker の IDE にリダイレクトされるので、そこで SQL 派生テーブル用に新たに作成したビューファイルを確認します。SQL Runner に入力したクエリに基づいて SQL 派生テーブルのビューファイルが Looker で自動生成されていることがわかります。ビューファイルの最初の 12 行を以下に示します。

view: user_facts { derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id LIMIT 10 ;; }

Looker におけるファイルは次のようになります。

user_facts.view の 10 行のコードを表示

新しい user_facts ビューが views フォルダの外に作成されていることに注目してください。ビューファイルはプロジェクト内で整理することをおすすめします。

  1. [views] の横にある矢印をクリックして、ビューの一覧を表示します。

  2. user_facts.view をクリックして、views フォルダの下にドラッグします。

  3. user_facts.view をクリックして、SQL 派生テーブルのビューファイルを参照します。

Looker によって、SQL クエリの SELECT 句の各列に、1 つのディメンションと 1 つの新しいカウントのメジャーが自動で作成されます。この後のステップでは、ビューファイルを変更して不要になった LIMIT 句を削除し、新しいカウント メジャーを非表示にして、ビューに主キーを追加します。

  1. sql パラメータから LIMIT 10 のコード行を削除します。

前述のとおり、count メジャーが派生テーブルで使用されるディメンションとともに自動で生成されます。同じ数値を提供する count が別のビューにすでにある場合、この自動生成の count メジャーは必要ないことがあります。

この例では、自動生成の count メジャーは注文 ID をカウントしていますが、注文のカウントは order_items ビューにすでに存在します。

hidden: yes パラメータを使用して、count メジャーを削除または非表示にできます。このカウントが別のカウントと同じである場合、検証用にメジャーを残しながらユーザーには公開しないようにする場合は、メジャーを非表示にすることをおすすめします。

  1. measure: count 定義で、type: count の前に新しい行を追加し、以下を挿入します。
hidden: yes

最後のベスト プラクティスは、新しいビューに必ず主キーを指定することです。

この例では、primary_key: yes パラメータを user_id ディメンションに追加できます。user_id は、個々の注文の詳細情報を提供するこのビューを整理するための中心となる ID です。

  1. dimension: user_id 定義で、type: number の前に新しい行を追加し、以下を挿入します。
primary_key: yes

これで、新しいビューである user_facts が完成し、ディメンションとメジャーの新規作成とモデルファイル内の Explore への結合、Git ワークフローの完了と本番環境への変更内容の送信を行う準備ができました。これを基盤にして以降のセクションを続けていきます。

  1. [Save Changes] をクリックします。更新後のコードは次のようになります。
view: user_facts { derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items GROUP BY user_id ;; } measure: count { hidden: yes type: count drill_fields: [detail*] } dimension: user_id { primary_key: yes type: number sql: ${TABLE}.user_id ;; }

Looker におけるファイルは次のようになります。

user_facts.view の 28 行のコードを表示

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

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

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

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

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 SQL 派生テーブルのビューファイルを作成する

タスク 2. ビジネス上の問いに答えるためのメジャーを追加する

このセクションでは、最初に示した顧客の行動に関する問い「米国の各州におけるすべての顧客の平均ライフタイム収益と平均ライフタイム注文数は?」に答えるための 2 つの指標を追加します。

  1. user_facts.view ビューに、平均ライフタイム収益と平均ライフタイム注文数を計算する average_lifetime_revenueaverage_lifetime_order_count の 2 つのメジャーを追加します。
measure: average_lifetime_revenue { type: average sql: ${TABLE}.lifetime_revenue ;; } measure: average_lifetime_order_count { type: average sql: ${TABLE}.lifetime_order_count ;; }
  1. [Save Changes] をクリックします。ビューは次のようになります。

user_facts.view の 25 行目から 43 行目のコードを表示(前のステップのレイアウトを模倣)

新しいビューを Explore に結合する

このセクションでは、新しい派生テーブルを確認してテストします。まず、モデルファイル内の order_items Explore の定義に結合した後、Order Items Explore を使用して、変更内容を本番環境に push した場合にビジネス ユーザーに表示される内容を確認します。

  1. 同じページで、model フォルダ内の training_ecommerce.model ファイルをクリックして、その内容を変更します。

  2. explore: order_items の定義を見つけます。たとえば users ビューの結合など、いくつかの結合がすでに定義されています。

training_ecommerce.model の 14 行目から 28 行目を表示

  1. explore: order_items 定義で、users 用の既存の結合の上に、次のように指定して order_details 用の新しい結合を追加します。
join: user_facts { type: left_outer sql_on: ${order_items.user_id} = ${user_facts.user_id};; relationship: many_to_one }

sql_on パラメータによって、user_id が結合フィールドとして特定されています。relationship パラメータによって、order_items には user_id のインスタンスが複数存在する場合がありますが、user_facts は注文ごとに要約行が 1 つになるように編成されており、各 user_id のインスタンスが 1 つのみになることが示されています。

  1. [Save Changes] をクリックします。これで、Explore の内容は次のようになります。
explore: order_items { join: user_facts { type: left_outer sql_on: ${order_items.user_id} = ${user_facts.user_id};; relationship: many_to_one } join: users { type: left_outer sql_on: ${order_items.user_id} = ${users.id} ;; relationship: many_to_one } ... ... ... }

Looker におけるビューは次のようになります。

user_facts Explore が追加された training_ecommerce.model の 1 行目から 29 行目を表示

  1. ビューを Explore に結合したので、Order Items の Explore ページに移動します。

  2. User Facts ビューで、User ID ディメンションと Average Lifetime Order Count メジャーおよび Average Lifetime Revenue メジャーを選択します。

  3. [Row Limit] を 100 に設定します。

  4. [Run] をクリックします。結果は次のようになります。

User ID ディメンション、Average Lifetime Order Count メジャー、Average Lifetime Revenue メジャーの 10 行のデータが表示された結果テーブル

  1. 次に、User ID ディメンションを削除し、Users ビューから State ディメンションを追加します。

  2. Country ディメンションをクリックし、フィルタを追加します。

  3. USA を選択します。

USA フィルタ

  1. [Run] をクリックしてクエリをもう一度実行します。

同じメジャーを使用して、ユーザーと州ごとの平均ライフタイム収益と平均ライフタイム注文数の値を計算できるようになりました。

  1. 結果は次のようになります。

Users の Country、Users の State、Average Lifetime Order Count メジャー、Average Lifetime Revenue メジャーの 10 行のデータが表示された結果テーブル

  1. training_ecommerce モデル ファイルに戻ります。

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

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

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

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

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ビジネス上の問いに答えるためのメジャーを追加する

タスク 3. テンプレート フィルタを使用して動的な値を生成するように SQL 派生テーブルを更新する

前のラボで説明したように、テンプレート フィルタはパラメータと同じ論理パターンに従います。テンプレート フィルタではエンドユーザーが複数のフィルタ演算子から選択できる点が大きな違いです。数値データ型の場合、「次と等しい」、「次より大きい」、「次の範囲内」などがあります。

テンプレート フィルタでは、値はハードコードされていません。値はユーザーが入力し、その値が生成される SQL クエリに渡されます。ただし、フィルタ定義で Explore とディメンションを指定すると、オプションのプルダウン メニューを表示できます。

このセクションでは、ユーザーが選択した期間に基づいてすべての値を再計算するように、最初のセクションの SQL 派生テーブルの定義を変更します。

  1. Looker IDE で user_facts ビューに戻ります。

  2. まず、SQL 派生テーブルの定義を次のように変更して条件付き WHERE 句を含めます。

derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items WHERE {% condition select_date %} order_items.created_at {% endcondition %} GROUP BY user_id;; }
  1. 次に、ユーザーが日付を選択できるように、derived_table 定義の下に新しいフィルタを追加します。
filter: select_date { type: date suggest_explore: order_items suggest_dimension: order_items.created_date }

ビューファイルの最初の 18 行は次のようになります。

view: user_facts { derived_table: { sql: SELECT order_items.user_id AS user_id ,COUNT(distinct order_items.order_id) AS lifetime_order_count ,SUM(order_items.sale_price) AS lifetime_revenue ,MIN(order_items.created_at) AS first_order_date ,MAX(order_items.created_at) AS latest_order_date FROM cloud-training-demos.looker_ecomm.order_items WHERE {% condition select_date %} order_items.created_at {% endcondition %} GROUP BY user_id;; } filter: select_date { type: date suggest_explore: order_items suggest_dimension: order_items.created_date }
  1. [Save Changes] をクリックします。ファイルは次のようになります。

user_facts.view の 1 行目から 18 行目を表示

次に、Order Items Explore の動的な SQL 派生テーブルのテストとして、前のタスクのクエリを繰り返し、フィルタを追加すると値が変化することを確認します。

  1. Order Items Explore に戻ります。

  2. User Facts ビューで Average Lifetime Order Count メジャーと Average Lifetime Revenue メジャーを選択します。

  3. Users ビューで State ディメンションを選択します。

  4. User Facts ビューで [Select Date] という新しいフィルタ専用フィールドの横にあるフィルタ アイコンをクリックします。

  5. UI の上部にある最初のフィルタの値は [is in the past] が選択されたままにします。

  6. 2 番目のフィルタの値として [complete years] を選択し、空の値ボックスに「1」を追加します。

  7. Users ビューから Country のフィルタを追加し、USA に設定します。

  8. [Run] をクリックして、結果を確認します。

州または国ごとの過去 1 年間の平均ライフタイム注文数と平均ライフタイム収益が表示されます。

  1. [SQL] タブをクリックして SQL を確認します。

  2. この時点で、フィルタの値を変えて、テンプレート フィルタが値に応じてどのように変化するかを [SQL] タブで確認できます。

  3. user_facts ビューに戻ります。

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

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

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

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

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 テンプレート フィルタを使用して動的な値を生成するように SQL 派生テーブルを更新する

お疲れさまでした

このラボでは、SQL 派生テーブルを作成し、Liquid でテンプレート フィルタを使用して動的な値を生成し、動的な SQL 派生テーブルを活用して複雑な問いに答えました。

次のステップと詳細情報

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

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

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

ラボの最終テスト日: 2024 年 4 月 24 日

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

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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