異なる Explore からの結果をマージする

Merged Results は、クエリ後の処理機能として、慎重に検討しないと、Looker インスタンス リソースを過大評価し、すべてのユーザーに対する Looker インスタンスの応答が遅くなることがあります。ベスト プラクティスは、代わりに LookML で関数とロジックを定義することです。これにより、データベースによって処理される SQL が生成されます。Looker パフォーマンスの最適化について詳しくは、ヘルプセンターの Looker のパフォーマンスの最適化をご覧ください。

Looker の Explore は、データ フィールドとテーブルの間の定義済み関係を使用してデータベース テーブルのデータを最も効果的な方法で組み合わせるために、Looker 開発者によって設計されます。このため、データの調査には単一の Explore を使用することをおすすめします。

ただし、Looker デベロッパーが必要な関係を作成していない、または技術的な制約に直面している場合もあります。このような場合、マージされた結果を使用すると、異なる Explore からの結果(異なるモデルやプロジェクトも含む)の結果を組み合わせて、Explore およびビジュアリゼーションの作成を行うデータテーブルを作成できます。Merged Results を概念実証として使用すると、LookML のプロジェクトとモデルをさらに開発し、定義できます。

マージされた結果について

クエリを結合する際には、まず 1 つの Explore から単一のクエリを作成し、その後、他のクエリをその最初のクエリと組み合わせます。

Merged Results 機能では、マージされるクエリごとに 5,000 行のデータの上限が設定されます。5,000 行を超えるデータを返すクエリを含めると、マージされた結果には最初の 5,000 行のみが含まれます。

デフォルトでは、最初のクエリがプライマリ クエリとみなされます。Looker がデータを照合してマージされた結果を作成すると、追加された各クエリを(他の追加されたクエリではなく)プライマリ クエリと一致させるため、これは重要なコンセプトです。このため、クエリを追加するたびに、プライマリ クエリのディメンションにマッチング可能なディメンションを追加する必要があります。

プライマリ クエリを切り替えて、追加したクエリをプライマリ クエリとして設定することもできます。

以下は、クエリセットとその結合された結果の例です。

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

マージされた結果では、実際の SQL 結合は実行されません。ただし、SQL の結合に慣れていれば、Merged Results 機能を使用して、複数の Explore の結果を左結合と同様に組み合わせることができます。追加したクエリの結果は、プライマリ クエリの結果として結合されます(プライマリ クエリに左結合されたかのように扱われます)。

左結合の概念になじみがなくても問題ありません。実際には、どのクエリがプライマリ クエリなのかが重要です。

  • フィールド名の表示方法: 一致するフィールドについては、前述のように、マージされた結果でプライマリクエリのフィールド名が使用されます。
  • マージされた結果で値が一致しないクエリを処理する方法次のセクションの一致するデータ値がない場合に、では、Looker が一部のディメンションの場合のみ、データを結合する仕組みを説明します。
  • マージされた結果で複数のクエリが一致する値を処理する方法: 同じクエリの中で特定の値(または値の組み合わせ)を持つ複数の行がクエリにある場合に、Looker がデータをマージする方法については、後述の1 つのクエリに同じ値に対して複数の行がある場合をご覧ください。

1 つのクエリに一致するデータ値がない場合はどうなるでしょうか。

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

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

    下の例では、プライマリ クエリの「Maternity」の行があるため、マージされた結果にはこの行が表示されます。追加されたクエリには Maternity 行がないため、追加されたクエリのフィールドの Maternity には NULL が表示されます。
  • 行が追加されたクエリにはあっても、プライマリ クエリには存在しない場合、その行は結果に一切表示されません。

    以下の例では、追加したクエリには Jeans の 2 つの行がありますが、プライマリ クエリの行はありません。そのため、この行は結合された結果に表示されません。

この例では、プライマリ クエリを切り替えて、追加したクエリを新しいプライマリ クエリとして作成すると、以下のマージされた結果が得られます。

Maternity 行は、新しいプライマリ クエリには存在しないため、現在は保持されていません。しかし、Jeans 行はあるため、これらの行は、プライマリ クエリに追加されているクエリにのみ存在するディメンションとメジャーに対して NULL を示します。

また、セカンダリ マージ結果クエリに NULL があるのはなぜですか?もご覧ください。Merged Results の値の欠落や null に関するトラブルシューティングのヒントについて詳しくは、ヘルプセンター記事をご覧ください。

1 つのクエリに同じ値に対して複数の行がある場合、どうなるでしょうか。

最後に、一致するプライマリ 行が複数行で処理されるため、必要なプライマリ クエリを指定することも重要です。追加したクエリの 2 つ以上の行で、プライマリ クエリの行と一致する値がある場合、プライマリ クエリの行がその数だけ複製されます。

下の例では、add クエリに Dresses の行が 2 行あります。マージされた結果では、プライマリ クエリの Dresses 値が 2 回、追加されたクエリの Dresses の行ごとに 1 つずつ表示されます。

この場合、プライマリ クエリを切り替えても、Dresses 行が 2 行あるため、Dresses 行は 2 行となります。つまり、クエリのマージを行うと、プライマリ クエリよりも行数が多くなっても、結果的に行が少なくなることがあります

クエリの統合

複数のクエリの結果を統合するには、次の手順を行う必要があります。

  1. プライマリ クエリと呼ばれる最初のソースクエリを作成します。
  2. 次のソースクエリを追加します
  3. それらのクエリのマージルールを確認し、マージを実行します
  4. オプション:

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

プライマリ クエリの作成

複数のクエリの結果をマージするには、最初のクエリを使用します。これはプライマリ クエリとみなされます。

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

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

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

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

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

    次のソースクエリの追加

    メインの Explore を作成したら、別のソースクエリを追加できます。

  6. Explore で歯車アイコンをクリックします。

  7. [Merge Results] を選択します。[Explore] ウィンドウが開きます。

  8. [Explore] ウィンドウで、次のクエリを作成する Explore の名前をクリックします。

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

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

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

  10. 必要に応じて、フィルタを使用してデータを絞り込むこともできます。

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

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

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

マージルールを確認してマージを実行する

Looker で、クエリとのマッチングに最適なディメンションが自動的に検出され、それらのマッチングが [マージルール] セクションに表示されます。Looker は、各クエリとプライマリ クエリをマージする方法を紹介します。

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

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

なお、ソースクエリの表計算は、マージされた結果に標準ディメンションとして表示されます。

マージされた結果を使用、変更する

マージされた結果を使用して、次のことを行えます。

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

マージされた結果を再利用するには、次の方法があります。

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

マージされた結果を変更するには:

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

キャッシュを削除してデータベースから最新の結果を取得するには、[Merged Results] ウィンドウの右上にある歯車メニューから [Clear Cache & Refresh] を選択します。

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

マージされた結果を編集する

マージされた結果を取得した後も、マージ後のクエリと、クエリのマージに使用するルールを柔軟に編集できます。

ソースクエリの編集

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

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

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

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

マージルールの編集

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

[Merge Rules] セクションを使用して、照合に使用するディメンションを変更または追加できます。

  1. プルダウン メニューを使用して、データを照合するためのその他のディメンション オプションを表示します。
  2. マッチングに使用できるその他のディメンションがある場合は、[+ ディメンションを追加] が表示されます。[+ ディメンションを追加] をクリックして、クエリ マージで使用する追加のディメンション セットを設定します。
  3. 2 つのディメンション間でデータを照合しない場合は、[X] をクリックします。

プライマリ クエリの切り替え

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

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

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

マージされた結果をダッシュボードに保存

ダッシュボードにマージされた結果クエリを追加したら、マージされた結果タイルへのダッシュボード フィルタの追加または適用タイルの配置タイルの編集、またはダッシュボードへの新しいタイルの追加を行うことができます。マージされた結果に基づいてタイルからデータをダウンロードすることはできませんが、PDF 形式でダッシュボードをダウンロードしたり、CSV ファイルの集合としてダッシュボードをダウンロードしたりできます。

マージされたクエリになんらかの変更が加えられると、マージされた結果タイルに適用されているダッシュボード フィルタが無効になります。フィルタは、フィルタ設定ウィンドウで再度オンにすることで復元できます。

LookML ダッシュボードでマージされた結果クエリを使用することもできます。その場合、まずユーザー定義のダッシュボードにクエリを保存してから、そのダッシュボードを LookML に変換します。ユーザー定義ダッシュボードを LookML に変換するには、LookML ダッシュボードの構築に関するドキュメント ページで説明されている手順を行います。

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

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

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

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

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

まとめ

Looker デベロッパーはさまざまなデータベース テーブルのデータを組み合わせる方法を慎重に検討しているため、可能であれば、単一の Explore からのデータを使用してください。ただし、必要に応じて、複数の Explore とデータベースのデータを組み合わせることができる強力な手法は、結果をマージすることです。