統合された結果のセカンダリ クエリに null 値があるのはなぜですか?

統合された結果は、LookML で開発することなく、さまざまな Explore のデータをすばやく組み合わせるのに便利な機能です。統合された結果は、プライマリ クエリとセカンダリ クエリの間で左結合を効果的に実行します。つまり、フィールド名、一致する値、最終結果テーブルは、セカンダリ クエリのデータがどのようにプライマリクエリに一致するかによって異なります。

Explore 間で統合を実行すると、予期しない結果が生じる可能性があります。統合された結果のドキュメントでは、次のような条件に対処しています。

では、セカンダリ クエリに含まれる値がプライマリ クエリの値と一致することが予期されたものの、最終結果に null 値が表示された場合にはどうすればよいでしょうか。

このページでは、こうした予期しない結果のトラブルシューティング方法を説明します。

使用例

次のユースケースは、ユーザーと注文の情報を含む e コマース サンプル データセットに基づいています。この例では、都市あたりのユーザー数([ユーザーの都市] でグループ化された [ユーザー数])という 1 つのクエリを、注文数([ユーザーの都市] と [ユーザーの州] でグループ化された [注文数])という 2 つめのクエリと統合します。

プライマリ クエリ

プライマリ クエリは、[ユーザーの都市] でグループ化された [ユーザー数] です。

プライマリ クエリの結果を示す、統合された結果のデータ テーブルを探索します。

セカンダリ クエリ

セカンダリ 2 つ目のクエリは、[ユーザーの都市] と [ユーザーの州] でグループ化された [注文数] です。

セカンダリ クエリ結果を示す統合された結果のデータ テーブルを探索します。

統合ルールは、両方のクエリで共通のフィールドである [ユーザーの都市] で、両方のクエリをマージするように設定されています。以前にリンクされているドキュメントで説明されている、データセットと予想される統合された結果の挙動に精通していれば、各行では、すべての都市が州とユーザー数に一致するはずであることがわかります。統合された結果はすべての値と一致し、null 値は表示されないことが予想されます。

ただし、結果には null 値があります。半数以上の都市が州または注文数に一致しません。

セカンダリ クエリ フィールドの null 値を示す統合された結果のデータテーブル。

ソリューション

ご安心ください。データに一致する値があることがわかっている場合(別のクエリを実行してこれが正しいことを確認します)、次のいくつかの解決策が考えられます。

  • 各ソースクエリを同じ方法で並べ替える。
  • ソースクエリの行数上限を増やす。

各ソースクエリを同じ方法で並べ替える

統合された結果は、デフォルトで500 行に制限されている Explore に基づいているため、統合しているクエリ結果が最終的な結果に含まれないことがあります。

この問題を解決するには、個々のソースクエリを編集して並べ替えて、お互いをより一致させます。 

今回のユースケースでは、プライマリ クエリは [ユーザーの都市] で昇順に並べ替えられます。セカンダリ クエリはそうではありません。2 つのクエリの結果をより一致させるために、プライマリ クエリと同じ方法でセカンダリ クエリを並べ替えます。この場合、[ユーザーの都市] で昇順に並べ替えます。

セカンダリ クエリをプライマリ クエリと同様に並べ替えると、結果を最終的な統合でより正確に一致させることができます。

プライマリ クエリ フィールドとセカンダリ クエリ フィールドの 非 null 値を表示する統合された結果のデータテーブル。

ソースクエリの行数制限を増やす

前述の最初のソリューションと同様に、ソースクエリに設定されている行の制限によって予期しない null 値が発生することがあります。具体的にこのケースでは、セカンダリ クエリ(デフォルトで 500 行に制限)では、プライマリ クエリによって生成されるすべての行と一致する十分な行がないため、最終的な統合で null 結果が表示されます。

セカンダリ クエリの行数をプライマリ クエリに合わせて増やすために、セカンダリ クエリの行数制限を増やすことができます。これにより、プライマリ クエリに一致する行が増え、セカンダリ クエリ列の null 値が少なくなります。

プライマリ クエリ フィールドとセカンダリ クエリ フィールドの 非 null 値を表示する統合された結果のデータテーブル。

Summary

予期しない統合された結果が発生した場合は、次の手順でトラブルシューティングを行います。

  1. Explore の歯車メニューで [キャッシュをクリアして更新] オプションを選択し、クエリが最新の結果を取得するようにします。
  2. 統合された結果のドキュメントの、1 つのクエリに一致するデータ値がない場合のセクションで説明しているように、null 値が表示されるソースクエリ間で一致する値があることを確認します。
  3. ソースクエリを並べ替え、より一致するようにします。
  4. ソースクエリの行制限をデフォルトよりも大きくして、一致して統合できる行を増やします。
  5. ここで説明される解決策のいずれも、動作を解決できない場合は、可能であれば、より正確な結果を得るために、結合ロジックを LookML にハードコードします。