始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Customize native derived tables using derived columns
/ 50
Customize native derived tables using filters
/ 50
Looker は Google Cloud で利用できる最新のデータ プラットフォームで、インタラクティブにデータを分析して可視化できます。Looker を使用すると、詳細なデータ分析、さまざまなデータソースから得た分析情報の統合、実用的なデータドリブン ワークフローの構築、独自のデータ アプリケーションの作成を行うことができます。
このラボでは、ネイティブ派生テーブルを活用して複雑な質問に答え、高度なユースケースに対応し、組み込みパラメータを使用してカスタマイズする方法を学習します。
ここでは以下について学びます。
学習効果を最大限に高めるためには、LookML に関する知識が必要です。このラボを開始する前に、「Understanding LookML in Looker」スキルバッジ コースを修了することをおすすめします。
こちらの説明をお読みください。ラボの時間は制限されており、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
準備ができたら、[ラボを開始] をクリックします。
[ラボの詳細] ペインに、このラボで使用する一時的な認証情報が表示されます。
ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
[ラボの詳細] ペインに表示されているラボの認証情報を確認してください(このラボの Looker インスタンスにログインする際に使用します)。
[Open Looker] をクリックします。
提供されたユーザー名とパスワードを、[Email] フィールドと [Password] フィールドに入力します。
ユーザー名:
パスワード:
[Log In] をクリックします。
正常にログインすると、このラボで使用する Looker インスタンスが表示されます。
ネイティブ派生テーブルは、作成済みの SQL クエリと同じ関数を実行する派生テーブルですが、LookML 言語でネイティブに表現されます。
ネイティブ派生テーブルは、どのような理由から使用すべきなのでしょうか。前のラボで作成した user_facts SQL 派生テーブルについて考えてみましょう。オーダー ID の COUNT を lifetime_order_count として、sale_price の SUM を lifetime_revenue として計算しました。これらの集計は、メジャーとしてモデルにすでに存在しています。また、order_items ビューには、order_count と total_sales がすでに存在します。
ネイティブ派生テーブルは、LookML の基本原則である再利用性を具現化したものであるため、非常に便利です。既存のディメンション、メジャー、さらには Explore や結合ロジックを継承できます。これにより、「ハードコード」されたデータベース参照の数が最小限で済むため、長期的なモデルの保守性が大幅に向上します。
このセクションでは、brand_order_facts というネイティブ派生テーブルを作成します。このテーブルには、ブランドを総収益でランク付けする派生列が含まれており、動的な日付範囲やユーザー入力を使用してフィルタできます。また、上位 5 ブランドに属するかどうかを各行にラベル付けする新しいディメンションも作成します(6 位以下のすべてのブランドは「6) Other」という 1 つのブランド名にまとめます)。
まず、Looker のユーザー インターフェースの左下にある切り替えボタンをクリックして Development Mode に切り替えます。
Looker のナビゲーション メニューで、[Explore] をクリックします。
[E-Commerce Training] で、[Order Items] をクリックします。
[Inventory Items] ビューで、[Product Brand] ディメンションをクリックします。
[Order Items] ビューで、[Total Revenue] メジャーをクリックします。
[Run] をクリックします。
[Run](ページの右上)の横にある設定の歯車アイコン()をクリックして、[Get LookML] を選択します。
[Derived Table] タブに移動し、ボックス内の LookML コードをクリックしてクリップボードにコピーします。
Looker IDE([Develop] > [qwiklabs-ecommerce])に移動し、[File Browser] の横にあるプラス(+)アイコンをクリックして、[Create View] を選択します。
新しいビューに「brand_order_facts」という名前を付けて、[Create] をクリックします。
[brand_order_facts.view] をクリックして、[views] フォルダの下にドラッグします。
自動生成されたサンプルコードをすべて消去し、[Explore] からコピーしたコードを貼り付けます。自動生成されたビュー名は、必ず brand_order_facts に修正してください。ビューは次のようになります。
ここまでの作業で、ネイティブ派生テーブルの基盤ができました。次のタスクはブランドのランク付けです。これは、ほとんどの SQL 言語で ROW_NUMBER() 関数を使用して実現できます。
これを行うには、ネイティブ派生テーブルの explore_source に derived_column を追加する必要があります。ネイティブ派生テーブルでは、derived_column を使用して、explore_source パラメータで指定された Explore にまだ存在していない列を指定できます。この例では、brand_rank とします。
column: total_revenue {} の定義で、まず brand_rank 派生列を定義します。派生列を作成する場合は、必ずディメンションも追加する必要があります。これは、通常のデータベース テーブルに列がある場合と同じです。つまり、列は LookML でディメンションとして表現する必要があります。自動生成されたディメンションには sql パラメータがないことにお気づきでしょうか。これは、ディメンションに対して sql を指定しない場合、Looker はディメンションとまったく同じ名前を持つ基になるデータ内の列を指すものと想定するためです。この動作は、プロジェクトの他の領域では便利なショートカットとして使用できる可能性がありますが、一般的には、可能な限り明示的に記述することをおすすめします。この場合、少なくとも型を指定する必要があります。指定しない場合、Looker はデフォルトで文字列とみなしますが、今回の例では文字列は使用しません。
product_brand ディメンションのすぐ上に、次のコードを追加します。新しいビューは次のようになります。
[Save Changes] をクリックします。
次に同じページで、model フォルダ内の training_ecommerce.model ファイルをクリックして、その内容を変更します。
explore: order_items の定義を見つけます。
explore: order_items の定義で、次のように指定して brand_order_facts の新しい結合を追加します。
[Save Changes] をクリックします。
モデルファイルは次のようになります。
brand_order_facts ビューを Explore に結合したので、Order Items の [Explore] ページに移動します。
Brand Order Facts ビューで、Brand Rank、Product Brand、Total Revenue の各ディメンションを選択します。
[Row Limit] を 10 に設定します。
[Run] をクリックします。結果は次のようになります。
ここまでは順調です。しかし、ビジネス ユーザーが「Example Brand」だけでなく「1) Example Brand」のような形式でブランド名を表示したい場合はどうでしょうか。どうすれば実現できるでしょうか。このような場合は、他の 2 つのディメンション値を連結するディメンションを作成できます。
brand_order_facts ビューに戻ります。
ブランドのランキングと商品ブランドを連結する brand_rank_concat という別のディメンションを作成します。
brand_rank_concat でランク番号を確認するだけでよく、別のフィールドを使用する必要はないため、brand_rank を非表示にします。brand_rank_concat にラベルを追加します。ここでは「Brand Name」というラベルを使用します。最後のステップとして、ランク 6 位以下のすべてのブランドを「Other」という分類にまとめる必要があります。そのため、まずブランドのランキングが上位 5 位以内かどうかを評価する「踏み台」となるディメンションを作成します。
brand_rank_top_5 という名前の新しいディメンションを作成します。brand_rank_grouped という名前の新しいディメンションを作成し、次のコードを使用して brand_rank_top_5 を組み込みます。ビューは以下のようになります。
Order Items の [Explore] ページに戻ります。
Brand Order Facts ビューで、Brand Name Grouped ディメンションを選択します。
Order Items ビューで Total Revenue メジャーを選択します。[Row Limit] を 10 に設定します。
[Run] をクリックします。
[Brand Name Grouped] 列が最初から最後までの順に並んでいることを確認し、[Visualization] タブで [Pie Chart] をクリックします。
以下の図のようになっていることを確認します。
ページ右上の [Run] の横にある設定(歯車)アイコン をクリックし、[Save] > [As a Look] を選択します。
Look のタイトルとして「Ranked Brand Revenue」と入力します。
[Save] をクリックします。
brand_order_facts ビューに戻ります。
[LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。
commit メッセージを追加して、[Commit] をクリックします。
最後に、[本番環境にデプロイ] をクリックします。
これで、ユースケースや必要なロジックを個別の基本ディメンションに分解し、それらを組み合わせて特定のビジネス上の質問に答えることの有用性を理解していただけたかと思います。ベスト プラクティスの LookML 開発では、このような隠された「踏み台」ディメンションとメジャーが多数存在するのが一般的です。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
次に、過去 365 日間の最近の注文のみを重視する例について考えてみましょう。上位 5 ブランドの中には、現在とは別のトレンドによって数年前は人気を集めていたものの、過去 1 年間でランキングが変動したブランドもあるかもしれません。
このセクションでは、LookML のネイティブ派生テーブルで使用するさまざまなタイプのフィルタについて説明します。フィルタは、メジャーのフィルタと同様に、派生テーブルにフィルタを適用するために使用します。WHERE 句または HAVING 句を追加します。
まず、brand_order_facts ビューに戻ります。
derived_column 定義で、ネイティブ派生テーブルを過去 365 日間に作成された注文に制限するフィルタを追加します。
Order Items Explore に戻ります。
Brand Order Facts ビューで、Brand Name Grouped を選択します。
Order Items ビューで Total Revenue メジャーを選択します。
[Run] をクリックします。
[Data] バーで [SQL] タブをクリックして、クエリでフィルタがどのように使用されているかを確認します。
過去 365 日間の注文のみを表示するよう Ordered Items Created Date にフィルタを追加したため、WHERE 条件はいわゆる「外部クエリ」内でのみ生成されます。これはディメンション フィルタのデフォルトの動作です。派生テーブルの共通テーブル式内に入るように指定したり、外部の WHERE を内部クエリに波及的に適用したりすることはできません。そのため、NDT 自体にフィルタを追加すると便利です。
過去 365 日間の注文データのみに制限するのは厳しすぎると企業側が判断した場合はどうすればよいでしょうか。たとえば、過去 2 年間のランキングを分析したい場合もあるでしょう。このような場合は、filters: [order_items.created_date: "365 days"] を使用すると、期間がハードコードされます。
この場合、単なるフィルタよりも bind_filters の方が便利なパラメータとして使用できます。外部の Explore からネイティブ派生テーブルの内部クエリに波及的に適用するフィールド(from_field)と、それをマッピングするネイティブ派生テーブルのフィールド(to_field)を指定できます。ほとんどの場合、これら 2 つは同じ値になります。
explore_source の bind_filters サブパラメータは、Explore クエリの特定のフィルタをネイティブ派生テーブルのサブクエリに渡します。
to_field は、フィルタが適用されるネイティブ派生テーブル内のフィールドです。to_field は、基盤となる explore_source のフィールドでなければなりません。from_field は、ユーザーが実行時にフィルタを指定した場合に、フィルタの取得元となる Explore 内のフィールドを指定します。brand_order_facts ビューに戻ります。
バインド フィルタを使用するには、まず前のセクションで作成した派生テーブル定義内の静的な日付フィルタを削除します。
次に、derived_column 定義で、bind_filters の次のテンプレートを追加します。
この場合、フィルタ from_field: order_items.created_date を取得し、影響を与えるかようにするか、to_field: order_items.created_date に適用する必要があります。
Order Items Explore に戻ります。
Brand Order Facts ビューで、Brand Name Grouped を選択します。
Order Items ビューで Total Revenue メジャーを選択します。
さらに、Order Items ビューの Created Date ディメンションで [Date] フィールドを選択し、[Date] の横にあるフィルタボタンを選択します。
フィルタ定義で、フィルタを「is in the past 1000 days」に指定します。デモでは、フィルタの制限が厳しくなりすぎないように、また過去 3 年間のデータを確実に取り込めるように、1,000 日間を使用しています。
[Run] をクリックします。
ご覧のとおり、柔軟性がはるかに高くなっています。過去 3 四半期に作成された注文でフィルタすると、ネイティブ派生テーブルはそれに応じて過去 3 四半期のランキングを計算します。特定の期間内に作成された注文でフィルタすると、ネイティブ派生テーブルの WHERE 条件でも同じ期間が使用されます。
次に、[Users] フィールドで [Country] と [Age] を選択し、フィルタを追加します。そしてフィルタをそれぞれ [Country is equal to USA] と [Age is greater than 21] に設定します。
[Run] をクリックします。
派生テーブルの WHERE 条件が影響を受けないことに注目してください。では、ビジネス ユーザーが「Ordered Items Created Date」以外の条件を設定していたらどうなるでしょうか。たとえば、米国の顧客による注文のランキングや、男性の顧客による注文のランキングだけを表示したい場合はどうすればよいでしょうか。
もちろん bind_filters を追加し続けることもできますが、Order Items Explore には多くのフィールドが用意されています。また、すべてに対して bind_filters を追加すると、時間がかかりすぎます。ここで非常に役立つのが、bind_all_filters という別のパラメータです。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Explore からネイティブ派生テーブルのサブクエリにフィルタを渡す最も簡単な方法は、ネイティブ派生テーブルの explore_source パラメータで bind_all_filters: yes を指定する方法です。これにより、Explore のすべてのランタイム フィルタが、ネイティブ派生テーブルのサブクエリに渡されます。
前のセクションで説明したように、別の Explore でネイティブ派生テーブルを使用する場合は、代わりに bind_filters パラメータを使用します。
まず、前のセクションで作成した派生テーブル定義内の bind_filter を削除します。
derived_column 定義の下に bind_all_filters: yes 定義を追加し、order_created_date だけでなく、すべてのフィルタをそれ自体にバインドします。
Order Items Explore に戻ります。
Brand Order Facts ビューで、Brand Name Grouped を選択します。
Order Items ビューで Total Revenue メジャーを選択します。
さらに、Order Items ビューで Created Date ディメンションを見つけ、[Date] の横にあるフィルタボタンをクリックします。
フィルタ定義で、フィルタを「is in the past 365 days」に指定します。
Users ビューで、[Country] と [Age] にフィルタを追加し、「Country is equal to USA」と「Age is greater than 21」に設定します。
[Run] をクリックします。
[SQL] タブをクリックします。派生テーブルの WHERE 条件が動的に更新されるようになりました。
bind_all_filters は便利ですが、ネイティブ派生テーブルを explore_source に結合しないと機能しません。つまり、ここでは brand_order_facts を explore_source(order_items)と同じ Explore に結合しているため、使用できるのです。
なぜかというと、bind_all_filters は、Looker が Explore 全体の任意のフィールドに対して WHERE 条件を生成する方法を認識する必要があるためです。ネイティブ派生テーブルで order_items の explore_source を使用しているにもかかわらず、それを別の Explore に結合している場合、その別の Explore には order_items に存在しない結合ビューとフィールドが多数含まれている可能性があり、order_items の世界では意味をなさない可能性があります。Looker は、このような他のフィールドで派生テーブルをフィルタする方法を認識できません。
bind_all_filters の動作を確認したところで、いくつかの異なる Explore フィルタを試し、ネイティブ派生テーブルのコンパイル方法にどのように影響するのかを確認してみましょう。
[LookML を検証] をクリックしてから、[Commit Changes & Push] をクリックします。
commit メッセージを追加して、[Commit] をクリックします。
最後に、[本番環境にデプロイ] をクリックします。
このラボでは、ネイティブ派生テーブルを使用して複雑な質問に回答し、派生列を使用して高度なユースケースに対応しました。また、組み込みのフィルタ パラメータを使用して動的な値を生成するように更新しました。さらに、ビジネス ユーザーがカスタマイズされたネイティブ派生テーブルを活用して複雑な質問に回答する方法についても学習しました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 3 月 4 日
ラボの最終テスト日: 2024 年 3 月 4 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください