始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a view file for the SQL derived table
/ 35
Create a view file for the native derived table
/ 35
Join the view for the SQL derived table
/ 30
Looker は Google Cloud で利用できる最新のビジネス ユーザー向けデータ プラットフォームで、データをインタラクティブに分析して可視化できます。LookML のデベロッパーは、新しいフィールド、テーブル、ビューを作成してデータをカスタマイズして編成することによって、ビジネス ユーザーが使用するデータをキュレートします。
また、Looker の派生テーブルを使用して、基盤となるデータベースではまだ定義されていない新しいテーブルを作成できます。たとえば、既存のテーブルから、e コマース データセットの各注文の注文詳細などの詳細を要約するための派生テーブルを作成できます。
このラボでは、LookML で、SQL の派生テーブルとネイティブ派生テーブルの両方のタイプの派生テーブルを作成する方法を学びます。
このラボでは、LookML ですでに作成済みの qwiklabs-ecommerce というプロジェクトを使用します。このプロジェクトは、注文、プロダクト、ユーザーに関する情報が含まれる e コマースの疑似データセットを基に作成されています。LookML モデリングの詳細については、Looker のドキュメントをご覧ください。
このラボでは、次の方法について学びます。
qwiklabs-ecommerce)を変更するこちらの説明をお読みください。ラボの時間は制限されており、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
準備ができたら、[ラボを開始] をクリックします。
[ラボの詳細] ペインに、このラボで使用する一時的な認証情報が表示されます。
ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
[ラボの詳細] ペインに表示されているラボの認証情報を確認してください(このラボの Looker インスタンスにログインする際に使用します)。
[Open Looker] をクリックします。
提供されたユーザー名とパスワードを、[Email] フィールドと [Password] フィールドに入力します。
ユーザー名:
パスワード:
[Log In] をクリックします。
正常にログインすると、このラボで使用する Looker インスタンスが表示されます。
LookML で派生テーブルを定義するには、SQL クエリを使用して SQL の派生テーブルを定義するか、Explore クエリを使用してネイティブ派生テーブルを定義します。
このタスクでは、各注文の詳細(注文 ID、ユーザー ID、アイテム数、注文されたアイテムの合計金額)を要約した新しい SQL の派生テーブルを定義するために SQL クエリを記述します。その後、その SQL の派生テーブルに対して、qwiklabs-ecommerce プロジェクトに新しいビューファイルを作成します。
Looker のナビゲーション メニューで、[Develop] > [SQL Runner] をクリックします。
[SQL クエリ] ウィンドウで、次のクエリを追加します。
この例では、order_id と user_id を選択し、各注文に関連付けられているアイテムの個数をカウントした後、それらのアイテムの価格を合計するクエリが必要です。
具体的には、COUNT 句で個々の注文アイテム ID(order_items テーブルの主キー)の数をカウントし、SUM 句で注文アイテム ID の sale_price を合計します。
GROUP BY 句を使用して結果を order_id と user_id でグループ化します。クエリが適切に機能していることを確かめるには一部のレコードを確認すればよいので、返される結果を LIMIT 句を使用して限定します。
この例では、各注文に関連付けられている注文 ID、ユーザー ID、アイテムの個数に加え、各注文の総収益が返されていることがわかります。
このテスト中に返されるデータの量を減らすために、LIMIT 句を使用していることに注目してください。この後のステップで SQL の派生テーブルに対する新しいビューファイルを作成するときには、LIMIT 句を削除します。
ページの右上にある [実行] の横にある設定アイコン()をクリックし、[Add to Project] を選択します。
[プロジェクト] で、[qwiklabs-ecommerce] を選択します。
[ビュー名] に「order_details」と入力します。
[追加] をクリックします。
SQL の派生テーブルに対して新しく作成されたビューファイルをレビューするために、Looker IDE にリダイレクトされます。
[order_details] ビューの新しいビューファイルは、[views] フォルダの外に作成されています。ビューファイルはプロジェクト内で整理することをおすすめします。
[views] の横にある矢印をクリックして、ビューの一覧を表示します。
[user_order_details.view] をクリックして、[views] フォルダの下にドラッグします。
[order_details.view] をクリックして、SQL の派生テーブルに対するビューファイルを参照します。
Looker によって、SQL クエリの SELECT 句の各列に、1 つのディメンションと 1 つの新しいカウントのメジャーが自動で作成されます。この後のステップでは、ビューファイルを変更して不要になった LIMIT 句を削除し、新しいカウント メジャーを非表示にして、ビューに主キーを追加します。
LIMIT 10 のコード行を削除します。前述のとおり、count メジャーが派生テーブルで使用されるディメンションとともに自動で生成されます。同じ数値を提供する count が別のビューにすでにある場合、この自動生成の count メジャーは必要ないことがあります。
この例では、自動生成の count メジャーは注文 ID をカウントしていますが、注文のカウントは order_items ビューにすでに存在します。
hidden: yes パラメータを使用して、count メジャーを削除または非表示にできます。このカウントが別のカウントと同じである場合、検証用にメジャーを残しながらユーザーには公開しないようにする場合は、メジャーを非表示にすることをおすすめします。
type: count の前に新しい行を追加し、「hidden: yes」と入力します。最後のベスト プラクティスは、新しいビューに必ず主キーを指定することです。
この例では、primary_key: yes パラメータを order_id ディメンションに追加できます。order_id は、個々の注文の詳細情報を提供するこのビューを整理するための中心となる ID です。
type: number の前に新しい行を追加し、「primary_key: yes」と入力します。これで、新しいビューである order_details が完成したので、ディメンションとメジャーの新規作成とモデルファイル内の Explore への結合、Git ワークフローの完了と本番環境への変更内容の送信を行う準備ができました。
[LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。
commit メッセージを追加して、[Commit] をクリックします。
最後に、[本番環境にデプロイ] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
SQL 派生テーブルとは対照的に、ネイティブ派生テーブル(NDT)は全体を LookML で記述します。ネイティブ派生テーブルは、LookML の基本原則である再利用性を具現化するため、便利です。既存のディメンション、メジャー、さらには Explore や結合ロジックを継承できます。
「ハードコード」されるデータベース参照の数が最小限で済むため、長期的にコードのメンテナンスがはるかに容易になります。
たとえば、前のセクションの order_details SQL 派生テーブルについて考えてみましょう。SQL には、order_items の COUNT と sale_price の SUM が含まれていました。しかし、order_items ビューには、order_item_count と total_revenue のメジャーがすでに存在します。SQL 派生テーブルを新たに作成する代わりに、既存のディメンションとメジャーを使用して新しい NDT を簡単に定義できます。
このセクションでは、前の例の SQL 派生テーブルを、今度はネイティブ派生テーブルとして再度作成します。ネイティブ派生テーブルを最も簡単に作成する方法は、Explore を使用することです。Order Items Explore を使用して、各注文の詳細情報(注文 ID、ユーザー ID、アイテム数、注文されたアイテムの合計金額)を含むネイティブ派生テーブルを作成します。
Looker のナビゲーション メニューで、[Explore] をクリックします。
[E-Commerce Training] で、[Order Items] をクリックします。
[Order Items] の横にある矢印をクリックします。
Order Items のデータパネルに、利用可能なディメンションとメジャーのリストが表示されます。Explore によって、パフォーマンスに優れた有効な SQL クエリが自動で生成されます。
[Order Items] > [Dimensions] で、[Order ID] と [User ID] をクリックします。
[Order Items] > [ Measures] で、[Order Count] と [Total Revenue] をクリックします。
[実行] をクリックして、結果を確認します。
クエリの結果を確認して、想定どおりの結果が返されていることを確認します。この例では、各注文に関連付けられている注文 ID、ユーザー ID、アイテムの個数に加え、各注文の総収益がリクエストの結果として適切に返されています。
ページの右上にある [実行] の横にある設定アイコン()をクリックし、[LookML を取得] を選択します。
[派生テーブル] をクリックし、LookML コードをパソコンのクリップボードにコピーします。この LookML コードをネイティブ派生テーブルの新しいビューファイルに貼り付けます。
新しいタブで新しい Looker ウィンドウを開きます。
Looker のナビゲーション メニューで、[Develop] タブをクリックし、qwiklabs-ecommerce という LookML プロジェクトを選択します。
[ファイル ブラウザ] の横で、[ファイルまたはフォルダを追加]()をクリックします。
[ビューを作成] を選択します。
[file name] として、「order_details_summary」と入力します。
[作成] をクリックします。
order_details_summary ビューの新しいビューファイルが、先ほどと同様に views フォルダの外に作成されています。
[views] の横にある矢印をクリックして、ビューの一覧を表示します。
order_details_summary.view をクリックして、views フォルダの下にドラッグします。
order_details_summary.view をクリックして、ネイティブ派生テーブルに対するビューファイルを表示します。
ビューファイル内の自動作成されたすべての LookML を削除します。
コピーした、ネイティブ派生テーブル用の LookML コードを貼り付けます。
自動生成されたビュー名(add_a_unique_name_1623275538 など)を order_details_summary に置き換えます。ファイルは次のようになります。
必要に応じてモデルファイルをインクルードするよう促すコメントが含まれていますが、該当する行はコメントアウトされた状態です。このモデルファイルの行はコメントアウトされたままにしてください。モデルファイルはほぼ常に他のファイルを含んでいるため、相互にインクルードするファイルが多数あると、モデル内で循環的な依存関係が生じるおそれがあります。これにより、構文検証エラーが発生する可能性があります。
これで、新しいビューである order_details_summary が完成したので、ディメンションとメジャーの新規作成とモデルファイル内の Explore への結合、Git ワークフローの完了と本番環境への変更内容の送信を行う準備ができました。
ここでは、このビューを Explore に結合しません。SQL 派生テーブルに対して行います。
[LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。
commit メッセージを追加して、[Commit] をクリックします。
最後に、[本番環境にデプロイ] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このセクションでは、新しい派生テーブルを確認してテストします。まず、モデルファイル内の order_items Explore の定義に結合した後、Order Items Explore を使用して、変更内容を本番環境に push した場合にビジネス ユーザーに表示される内容を確認します。
ネイティブ派生テーブルでは最後のステップは完了しませんが、ビューを Explore に結合するプロセスは、ビューが SQL 派生テーブルに対して作成されたものであっても、ネイティブ派生テーブルに対して作成されたものであっても同じです。
同じページで、model フォルダ内の training_ecommerce.model ファイルをクリックして、その内容を変更します。
explore: order_items の定義を見つけます。たとえば users ビューの結合など、いくつかの結合がすでに定義されています。
explore: order_items 定義の、users 用の既存の結合の上に、order_details 用の新しい結合を次の内容を指定して追加します。sql_on パラメータによって、order_id が結合フィールドとして特定されています。relationship パラメータによって、order_items には order_id の複数のインスタンスが存在する場合がありますが、order_details は各注文に対して要約行が 1 つになるように編成されているため、各 order_id のインスタンスが 1 つのみになることが示されています。
Looker のナビゲーション メニューで、[Explore] をクリックします。
[E-Commerce Training] で、[Order Items] をクリックします。
[Order Details] の横にある矢印をクリックします。
[Order Details] > [Dimensions] で、[Order ID]、[Order Item Count]、[Order Revenue]、[User ID] をクリックします。
[実行] をクリックして、結果を確認します。
[SQL] タブをクリックして、Looker によって生成された SQL クエリを表示します。
WITH 句で指定される共通テーブル式(CTE)がある点に注意してください。このネイティブ派生テーブルは、基盤となるデータベースに保存されるのではなく、実行時に CTE として生成されるためエフェメラルとみなされます。
派生テーブルは永続化することもでき、その場合は、基盤となるデータベースに格納されます。永続的な派生テーブルについて詳しくは、永続的な派生テーブル(PDT)の作成に関するドキュメントをご覧ください。
次のセクションでは、派生テーブルを永続化して、データベースに書き戻せるようにする方法を学びます。
training_ecommerce.model ファイルに戻ります。[LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。
commit メッセージを追加して、[Commit] をクリックします。
最後に、[本番環境にデプロイ] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これまでの例で確認した派生テーブルは一時的なものでした。つまり、Looker は Explore クエリでこれらの派生テーブルの CTE(または一時テーブル)を生成します。
ここでは、派生テーブルのもう 1 つのタイプである永続性について説明します。永続的な派生テーブル(PDT)は、接続されたデータベースに書き込まれて保存されます。派生テーブルを永続化するステップは、SQL 派生のテーブルでもネイティブ派生のテーブルでも同様です。
前述のように、永続的な派生テーブルのメリットは、ビジネス ユーザーが必要とした時点ですぐに使用できることです。したがってクエリの実行時間も短くできます。デメリットは、データベースの保存容量が消費される(費用に影響する可能性がある)ことと、より柔軟性が低いことです。
派生テーブルを永続化するには、定義の中で次のパラメータを 1 つ以上使用します。
datagroup_trigger では、モデル内で構成されたデータグループ(またはキャッシング ポリシー)を使用します。モデルでデータグループが定義されている場合は、これが派生テーブルを永続化するベスト プラクティスです。sql_trigger_value では、1 つの値を返す作成済みの SELECT ステートメントを使用します。Looker はその SELECT ステートメントを繰り返しデータベースに送信し、結果が変わったことを検出すると、PDT を再ビルドするための合図であると認識します。persist_for を使用して、「1 hour」や「4 hours」など、指定した期間にわたって PDT を使用できるようにします。ただし、persist_for には再ビルドのロジックがないため、その間 PDT は更新されません。また、期間が終了すると PDT は破棄され、次のビジネス ユーザーがクエリで必要とするまで再作成されません。
PDT の主な利点は、すぐに利用できるデータでクエリの実行時間を最小化できることです。そのため、persist_for を sql_trigger_value と同時に使用して、PDT でデータ更新が確実にキャプチャされるようにする、または、datagroup_trigger または sql_trigger_value のみを使用することをおすすめします。
このタスクでは、datagroup_trigger パラメータを使用してネイティブ派生テーブルを永続化します。これにより、モデルファイルの事前定義のデータグループ(キャッシュ ポリシー)に基づいて永続的な派生テーブルが再ビルドされます。
order_details_summary という名前のネイティブ派生テーブルに対して、training_ecommerce_default_datagroup を datagroup_trigger として追加することにより、training_ecommerce.model 内の training_ecommerce_default_datagroup で提供されるルールを使用して永続的な派生テーブルを再ビルドし、モデルで定義されるすべてのオブジェクトを 1 時間ごとに再ビルドします。
Looker のナビゲーション メニューで、[Develop] タブをクリックし、qwiklabs-ecommerce という LookML プロジェクトを選択します。
[views] の横にある矢印をクリックして、ビューの一覧を表示します。
order_details_summary.view をクリックして、ネイティブ派生テーブルに対するビューファイルを表示します。
derived_table 定義で、explore_source: order_items の閉じかっこ(})の後に新しい行を追加して、以下を貼り付けます。
Looker のナビゲーション メニューで、[Explore] をクリックします。
[E-Commerce Training] で、[Order Items] をクリックします。
[Order Details] の横にある矢印をクリックします。
[Order Details] > [Dimensions] で、[Order ID]、[Order Item Count]、[Order Revenue]、[User ID] をクリックします。
[実行] をクリックして、結果を確認します。
[SQL] タブをクリックして、Looker によって生成された SQL クエリを表示します。
派生テーブルが永続化されたため、WITH 句で識別された以前の CTE は存在しなくなり、order_details_summary 永続的派生テーブルからフィールドをクエリする SELECT ステートメントに置き換えられました。
order_details_summary ファイルに戻ります。[LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。
commit メッセージを追加して、[Commit] をクリックします。
最後に、[本番環境にデプロイ] をクリックします。
このラボでは、SQL 派生テーブルとネイティブ派生テーブルを LookML で作成し、基盤となるデータベースにまだ存在しない新しいテーブルを定義する方法を学びました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 4 月 22 日
ラボの最終テスト日: 2021 年 10 月 11 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください