論理テーブル間の関連付け
1 つのデータベースに複数のテーブルを含めることができます。各テーブルは、何かのリストと見なすことができます。つまり、リスト内の各レコードは、何らかの種類のオブジェクトのインスタンスを表します。
2 つのテーブルが異なる対象を扱うリストの場合であっても (例えば、1 つは顧客のリストで、もう 1 つが請求書のリストなど)、この 2 つのテーブルに顧客番号などの共通する項目があるなら、多くの場合、それはこの 2 つのテーブルの間に関係が存在することを示しています。標準の SQL クエリ ツールでは、ほとんどの場合、この 2 つのテーブルは結合されます。
Qlik Sense スクリプトで定義されたテーブルは、論理テーブルと呼ばれます。Qlik Sense は項目名に基づいてテーブルを関連付け、選択が行われると (例えば、フィルター パネルの項目値を選択すると) 結合を実行します。
つまり、関連付けは結合とほとんど同じです。唯一の違いは、結合はスクリプトが実行されるときに実行され、この結合の結果として論理テーブルが生成されます。それに対して、関連付けは論理テーブルの作成後に実行され、常に論理テーブル間で行われます。
Qlik Sense の関連付けと SQL 自然外部結合の違い
Qlik Sense の関連付けは SQL 自然外部結合に類似しています。ただし、SQL の外部結合では通常、あるテーブルから別のテーブルへの一方向の関係となるため、関連付けの方がより一般的です。関連付けでは、常に完全な (双方向) 自然外部結合が形成されます。
関連付け項目のレコード数情報
ほとんどの関連付け項目 (2 つ以上のテーブル間に共通する項目) の使用には、いくつかの制限があります。項目が複数のテーブルに存在する場合、Qlik Sense では、データのレコード数の計算に使用するテーブルを特定することが困難になります。
Qlik Sense は、データを分析することにより、計算に含めるメイン テーブルを特定するための確実な方法が存在するどうかを確認しますが (存在する場合もあります)、ほとんどの場合は推測することしかできません。間違った推測は致命的な結果を引き起こす可能性があるため (Qlik Sense が計算ミスをしたように見えます)、関連付け項目のデータ解釈があいまいな場合、プログラムは特定の操作が許可されないように設計されています。
項目関連付けの制限
- 項目を表示するフィルター パネルで、レコード数情報を表示することはできません。
- 項目の統計ボックスでは、ほとんどの統計ボックスに n/a が表示されます。
- チャートでは、Distinct 修飾子をアクティブにしない限り、項目のレコード数情報に基づく関数 (Sum、Count、Average など) を含む数式を作成することはできません。Qlik Sense はリロードするたびにすべてのチャートの数式をスキャンして、データ構造の変更により、あいまいさが発生していないか確認します。あいまいな数式が見つかった場合は、警告ダイアログが表示され、その数式は無効になります。問題が修正されるまで、その数式を有効にすることはできません。ログ ファイルが有効にされている場合は、すべてのあいまいな数式がログにリストされます。
回避方法
これらの制限に対しては、簡単な対処方法があります。レコード数が作成されるテーブルから、項目を新しい名前で余分にロードします。次に、レコード数を含むフィルター パネル、統計ボックス、またはチャートの計算で、その新しい項目を使用します。