異なる Explore からの結果を統合する

統合された結果はクエリ後の処理機能です。この機能は慎重に使用しないと、Looker インスタンスのリソースが過負荷になり、すべてのユーザーに対する Looker インスタンスのレスポンスが遅くなる可能性があります。代わりに、データベースで処理される SQL を生成する関数とロジックを LookML で定義することをおすすめします。Looker のパフォーマンスの最適化について詳しくは、Looker のパフォーマンスの最適化に関するベスト プラクティスのページをご覧ください。

Looker の Explore は Looker 開発者によって設計され、データ フィールドとテーブル間の定義された関係を使用して、データベース テーブルからのデータが効率的に結合されています。そのため、1 つの Explore を使用してデータを調べることをおすすめします。

ただし、Looker 開発者が必要な関係を作成していない場合や、技術的な制限事項がある場合があります。このような場合、統合された結果を使って異なる Explore からの結果(異なるモデルやプロジェクトのものを含む)を組み合わせてデータテーブルを作成し、それに対して探索ビジュアリゼーションの作成を行えます。統合された結果を概念実証として使用すると、LookML プロジェクトやモデルをさらに開発、定義できます。

統合された結果について

クエリを統合する場合は、まず 1 つの Explore から 1 つのクエリを作成し、他のクエリをその最初のクエリと結合します。

デフォルトでは、最初のクエリはプライマリ クエリとみなされます。Looker がデータを照合して統合された結果を作成する際は、追加された各クエリをプライマリ クエリと照合するため(他の追加クエリとは照合しない)、これは重要なコンセプトです。そのため、クエリを追加するときは、必ずプライマリ クエリのディメンションと照合可能なディメンションを含める必要があります。

たとえば、次のクエリについて考えてみます。

プライマリ クエリは次の結果を返します。

Products Category 商品数
有効 5
Jeans 9
フォーマル ウェア 3

セカンダリ クエリは次の結果を返します。

Products Category 品目の在庫数
有効 11
Jeans 16
フォーマル ウェア 6

これらのクエリを [商品カテゴリ] フィールドに結合すると、Looker が次のマージ結果を生成します。

Products Category 商品数 品目の在庫数
有効 5 11
Jeans 9 16
フォーマル ウェア 3 6

統合された結果では、実際の SQL 結合は実行されません。ただし、SQL 結合に慣れている方のために、統合された結果機能では、左結合と同じように複数の Explore の結果を結合します。追加されたクエリの結果は、プライマリ クエリに結合されたままのものとして、プライマリ クエリの結果と結合されます。

結合結果の仕組みを理解するために、左結合の概念に精通している必要はありません。具体的には次の理由により、どのクエリがプライマリ クエリであるかが重要となります。

  • フィールド名の表示: 一致するフィールドの場合、前の例に示すように、プライマリ クエリのフィールド名がマージされた結果で使用されます。
  • 一致する値のないクエリを統合された結果で処理する方法: 次のセクションの1 つのクエリに一致するデータ値がない場合で、一部のクエリの一致するディメンションにのみ特定の値がある場合のデータ結合処理について説明しています。

    また、統合された結果のセカンダリ クエリに null がある理由もご覧ください。 統合された結果の値が欠落している、または null である場合のトラブルシューティングのヒントについては、ベスト プラクティスのページをご覧ください。

  • 一致する値が複数あるクエリを統合された結果で処理する方法: このページの 1 つのクエリに同じ値の行が複数ある場合のセクションで、一部のクエリの一致するディメンションに特定の値(または値の組み合わせ)の行が複数ある場合のデータ結合処理について説明しています。

1 つのクエリに一致するデータ値がない場合

プライマリ クエリが重要であるもう一つの理由は、一致したディメンションでの null 値の処理方法にあります。

  • プライマリ クエリに存在する行が追加クエリには存在しない場合、追加クエリのその行のフィールドは NULL になります。

  • 追加クエリに存在する行がプライマリ クエリには存在しない場合、その行は結果に表示されません。

これらを説明するために、次のクエリ例を考えてみましょう。

プライマリ クエリは次の結果を返します。

Products Category プロダクト部門 商品数
有効 キッズ 522
有効 大人 545
Dresses 大人 878
フォーマル ウェア 大人 349

セカンダリ クエリは次の結果を返します。

Products Category 商品のブランド名 品目の在庫数
有効 ブランド 1 223
Dresses ブランド 2 80
Dresses Brand 3 3
Jeans Brand 3 8
Jeans ブランド 2 19

これらのクエリを [商品カテゴリ] フィールドに結合すると、Looker が次のマージ結果を生成します。

Products Category プロダクト部門 商品のブランド名 商品数 品目の在庫数
有効 大人 ブランド 1 545 223
有効 キッズ ブランド 1 522 223
Dresses 大人 ブランド 2 878 80
Dresses 大人 Brand 3 878 3
フォーマル ウェア 大人 349

プライマリ クエリには Formalwear の行があるため、結合された結果にはこの行が表示されます。追加クエリには Formalwear 行がないため、追加クエリの Formalwear のフィールドは NULL になります。

追加されたクエリでは「Jeans」の行が 2 行ありますが、メインのクエリではそうではありません。したがって、この行は統合された結果に表示されません。

この例では、プライマリ クエリを切り替えて、追加されたクエリを新しいプライマリ クエリにすると、Looker は次のマージ結果を生成します。

Products Category 商品のブランド名 プロダクト部門 品目の在庫数 商品数
有効 ブランド 1 大人 223 545
有効 ブランド 1 キッズ 223 522
Dresses ブランド 2 大人 80 878
Dresses Brand 3 大人 3 878
Jeans ブランド 2 19
Jeans Brand 3 8

Formalware 行は、新しいプライマリ クエリには存在しないため、Looker は表示しなくなりました。しかし現在、Looker では Jeans の行が表示され、メインのクエリに追加されているクエリのみに含まれるディメンションとメジャーに対して NULL が表示されます。

また、統合された結果のセカンダリ クエリに null がある理由もご覧ください。 統合された結果の値が欠落している、または null である場合のトラブルシューティングのヒントについては、ベスト プラクティスのページをご覧ください。

1 つのクエリに同じ値の行が複数ある場合

最後に、目的のプライマリ クエリを指定することが重要である理由として、複数の行に一致する値がある場合の処理方法について説明します。追加されたクエリの複数の行に、プライマリ クエリ内の行と一致する値がある場合、プライマリ クエリの行はその回数だけ複製されます。

次の例では、追加されたクエリにはる Dresses の 2 つの行があります。統合された結果には、プライマリ クエリの Dresses の値が 2 回表示されます(追加されたクエリの Dresses 行ごとに 1 回ずつ)。

プライマリ クエリは次の結果を返します。

Products Category プロダクト部門 商品数
有効 キッズ 522
有効 大人 545
Dresses 大人 878
フォーマル ウェア 大人 349

セカンダリ クエリは次の結果を返します。

Products Category 商品のブランド名 品目の在庫数
有効 ブランド 1 223
Dresses ブランド 2 80
Dresses Brand 3 3
Jeans Brand 3 8
Jeans ブランド 2 19

結合された結果クエリでは、[Products Category] フィールドを結合して次の結果が返されます。

Products Category プロダクト部門 商品のブランド名 商品数 品目の在庫数
有効 大人 ブランド 1 545 223
有効 キッズ ブランド 1 522 223
Dresses 大人 ブランド 2 878 80
Dresses 大人 Brand 3 878 3
フォーマル ウェア 大人 349

この場合にプライマリ クエリを切り替えると、新たに指定したプライマリ クエリには Dresses 行が 2 つあるため、引き続き Dresses 行は 2 つになります。まとめると、クエリを統合すると、プライマリ クエリにある行よりも多くの行が結果に表示される可能性がありますが、行数が減少することはありません。

クエリのマージ

複数のクエリの結果を統合するには、次の手順に従います。

  1. プライマリ クエリという最初のソースクエリを作成します
  2. 次のソースクエリを追加します
  3. これらのクエリの統合ルールを確認して統合を実行します
  4. 必要に応じて、次の操作を行うこともできます

    • 結果の並べ替えやピボット処理を行い、ビジュアリゼーションを作成します。
    • URL を使用して結果を再利用し、共有します。
    • ソースクエリを編集するか、ソースクエリを追加して結果を変更します。

プライマリ クエリの作成

複数のクエリの結果を統合するには、まず次の手順に従ってプライマリ クエリを準備します。

  1. [Explore] メニューから Explore を選択します。
  2. フィールド ピッカーから目的のディメンションと measure を選択します。このステップ中は、ディメンションのピボット処理はしないでください。

    以上で結果の統合を開始できますが、高度な探索手法を使用してクエリをさらに絞り込むこともできます。次のことが可能です。

  3. 必要に応じて、データのフィルタを追加します。

  4. 必要に応じて、表計算を含めてアドホック指標を作成します。

  5. 必要に応じて [Run] をクリックしてプライマリ クエリの結果を確認し、フィルタと表計算をテストします。

次のソースクエリの追加

プライマリ Explore を作成したら、次の手順で別のソースクエリを追加します。

  1. Explore で歯車アイコンをクリックします。
  2. [Merge Results] を選択します。[Choose a Explore] ウィンドウが開きます。
  3. [Choose an Explore] ウィンドウで、次のクエリを作成する Explore の名前をクリックします。

    [Edit Query] ウィンドウで Explore が開き、プライマリ クエリに統合する新しいクエリを作成できます。

    クエリを統合するために、Looker によってクエリの中から値が一致するディメンションが検出されます。値が完全に一致する共通ディメンションを少なくとも 1 つクエリに含むようにしてください。たとえば、両方のクエリに Date ディメンションがあり、一方のクエリでは値として「2017-10-01」が使用され、もう一方のクエリでは値として「October 2017」が使用されている場合、Looker はクエリの統合にこのディメンションを使用できません。

  4. フィールド ピッカーから目的のディメンションと measure を選択します。プライマリ クエリのディメンションに完全に一致するディメンションを少なくとも 1 つ含めてください。このステップ中は、ディメンションのピボット処理はしないでください。

  5. 必要に応じて、フィルタでデータを絞り込みます。

  6. 必要に応じて表計算を組み込み、クエリ フィールドに基づいて新しいフィールドを作成します。

  7. 必要に応じて [Run] をクリックしてソースクエリの結果を確認し、フィルタと表計算をテストします。

  8. [Save] をクリックして、クエリをプライマリ クエリに統合します。

統合ルールを確認して統合を実行する

Looker では、クエリの照合に使用する最適なディメンションが自動的に検出され、照合内容が [Merge Rules] セクションに表示されます。Looker により、マージごとに使用されるフィールドが表示されます。

  1. Looker がクエリとの照合に使用したディメンションを確認します(これらのルールの変更については、統合ルールの編集をご覧ください)。

  2. [実行] をクリックして、マージされたクエリ結果を表示します。

ソースクエリからの表計算は、統合された結果では標準ディメンションとして表示されることに注意してください。

統合された結果の使用と変更

統合された結果を使用して次のことができます。

  • データを調べて並べ替えます(データのドリルダウンを含む)。ただし、2 つの Explore の統合に使用されたディメンションをドリルダウンすると、プライマリ Explore のドリル フィールドのみが表示されます。
  • 合計を表示します。Looker では、各コンポーネント クエリの合計を計算し、それらの合計値を統合された結果で使用します。そのため、合計は高すぎるように見える場合があります。これは、結果が統合される前に合計が計算されているためです。これを回避する一つの方法は、各クエリでフィルターを揃えることです。
  • ビジュアリゼーションを作成します。
  • 結合された結果のディメンションをピボットします。データテーブルのディメンションの列にある歯車メニューから [Pivot] を選択します。ソースクエリではディメンションをピボットできないことに注意してください。

統合された結果を再利用するには、次のようにします。

  • ブラウザの URL を使用して結果を共有します。
  • ブラウザで URL をブックマークし、同じ結合クエリを後で再度実行します。統合された結果を Look として保存することはできません。
  • 統合された結果をタイルとしてダッシュボードに保存します(統合された結果をダッシュボードに保存するをご覧ください)。

統合された結果を変更するには、次のようにします。

  • [Add Query] ボタンをクリックして同じ手順に従い、追加の Explore からクエリを結合します。
  • ソースクエリを編集するか、クエリの統合方法を構成します。詳細については、統合された結果の編集をご覧ください。
  • フィルタを作成してソースクエリに追加します。これは、クエリを作成して統合するときに行うか、[Merged Results] ページでクエリを編集して行います。統合された結果にフィルタを直接追加することはできません。

キャッシュをクリアしてデータベースから新しい結果を取得する場合は、[Merged Results] ウィンドウの右上にある歯車アイコンから [Clear Cache & Refresh] オプションを選択します。

統合された結果のクエリをダウンロードするには、クエリをダッシュボードに保存してから、ダッシュボードを PDF ファイルまたは CSV ファイルのコレクションとしてダウンロードします。

統合された結果の編集

マージされた結果を入手したら、マージされた結果を次のように変更できます。

ソースクエリの編集

[Merged Results] ウィンドウでソースクエリに戻って編集するには、左側のペインでクエリ名をクリックするか、クエリの歯車メニューで [Edit] を選択します。これらのオプションは、[クエリを編集] 画面に戻ります。

フィールドの追加や削除、表計算の追加、ソースクエリのフィルタの変更を行うことができます。[Save] をクリックして、マージされた結果に戻ります。

クエリの歯車メニューには、次のオプションがあります。

  • Rename: [Merged Results] ウィンドウに表示されるクエリ名として別の名前を指定します。
  • Make Primary: クエリを統合された結果のベースにします。プライマリ クエリの役割については、統合された結果についてをご覧ください。
  • Delete: 統合された結果からクエリを削除します(削除したクエリを統合された結果に再び追加するには、ブラウザの戻るボタンを使用します)。

統合ルールの編集

クエリを追加すると、追加したクエリとプライマリ クエリの照合に使用できるディメンションが Looker によって自動的に検出されます。追加する各クエリには、値がプライマリ クエリのディメンションと完全に一致するディメンションが少なくとも 1 つ必要です。Looker によって、これらの一致が [Merge Rules] セクションに表示され、クエリをマージするフィールドが表示されます。

[Merge Rules] セクションを使用して、Looker でクエリをマージするために使用するフィールドを変更または追加できます。

  1. プルダウン メニューで、データの照合に使用できる他のディメンション オプションを確認できます。
  2. 照合に使用できるその他のディメンションがある場合は、[+ Add dimension] が表示されます。[+ Add dimension] をクリックして、クエリの統合で使用する追加のディメンションを構成します。
  3. 2 つのディメンション間でデータを照合しない場合は、[X] をクリックします。

プライマリ クエリを切り替える

クエリを統合する際は、まず 1 つの Explore から 1 つのクエリを作成します。次に、他のクエリを追加して最初のクエリと組み合わせます。デフォルトでは、最初のクエリがプライマリ クエリとみなされますが、どのクエリでもプライマリ クエリとして指定できます。プライマリ クエリとして指定するには、クエリの歯車メニューから [Make Primary] を選択します。

追加する各クエリには、値がプライマリ クエリのディメンションと完全に一致するディメンションが少なくとも 1 つ必要です。

プライマリ クエリを切り替えると、統合された結果が変更される可能性があります。プライマリ クエリの役割については、統合された結果についてをご覧ください。

統合された結果をダッシュボードに保存する

統合された結果のクエリをダッシュボードに追加したら、統合された結果のタイルにダッシュボード フィルタを追加または適用するタイルを並べ替えるタイルを編集する、ダッシュボードに新しいタイルを追加するといった操作が可能です。統合された結果に基づいてタイルからデータをダウンロードすることはできませんが、ダッシュボードを PDF として、または CSV ファイルのコレクションとしてダウンロードできます。

統合されたクエリが変更された場合、統合された結果のタイルに適用されたダッシュボード フィルタは無効になります。フィルタを元に戻すには、フィルタ構成ウィンドウでフィルタを再度有効にします。

LookML ダッシュボードで統合された結果のクエリを使用するには、まずユーザー定義のダッシュボードにクエリを保存してから、そのダッシュボードを LookML に変換します。ユーザー定義ダッシュボードを LookML に変換するには、LookML ダッシュボードの作成のドキュメント ページに記載されている手順に従ってください。

埋め込みの Look、ダッシュボード、Explore でのクエリの統合

適切な権限があれば、埋め込みの Look、ダッシュボード、Explore 内のクエリを統合できます。埋め込みの Look のクエリを別のクエリに統合するには:

  1. Look のタイトルにカーソルを合わせて、Look の歯車メニューを表示し、歯車メニューをクリックします。
  2. [Merge Results] を選択し、クエリを統合する手順に従います。

埋め込みダッシュボード タイルのクエリを統合するには:

  1. ダッシュボード タイルにカーソルを合わせて、そのダッシュボード タイルのプルダウン メニューを確認します。
  2. プルダウン メニューから [Explore From Here] を選択します。そのタイルのクエリの Explore が開きます。
  3. Explore の歯車メニューをクリックして、[Merge Results] を選択します。
  4. クエリの統合手順に従います。

  • 統合された結果機能では、統合されたクエリごとに使用できるデータは上限で 5,000 行です。5,000 行を超えるデータを返すクエリを含めると、最初の 5,000 行のみが統合された結果に含まれます。

  • プライマリ クエリのすべてのフィールドは、プライマリ クエリのフィールド名で統合された結果に表示されます。一致するディメンションに対してプライマリ クエリと追加クエリで異なる名前が使用されている場合は、プライマリ クエリのディメンション名のみが結果に表示されます。

まとめ

Looker 開発者はさまざまなデータベース テーブルのデータを組み合わせる方法を慎重に検討しているため、可能な限り 1 つの Explore のデータを使用してください。ただし、必要であれば結果を統合できます。これは、複数の Explore やデータベースのデータを組み合わせることができる便利な手法です。