論理テーブル間の関連付け

1 つのデータベースに複数のテーブルを含めることができます。各テーブルは、何かのリストと見なすことができます。つまり、リスト内の各レコードは、何らかの種類のオブジェクトのインスタンスを表します。

Example:  

2 つのテーブルが異なる対象を扱うリストの場合であっても (例えば、1 つは顧客のリストで、もう 1 つが請求書のリストなど)、この 2 つのテーブルに顧客番号などの共通する項目があるなら、多くの場合、それはこの 2 つのテーブルの間に関係が存在することを示しています。標準の SQL クエリ ツールでは、ほとんどの場合、この 2 つのテーブルは結合されます。

QlikView スクリプトで定義されたテーブルは、論理テーブルと呼ばれます。QlikView は、項目名に基づいてテーブル間を関連付けます。そして、選択が行われると (たとえば、リスト ボックスの項目値を選択すると)、結合を実行します。

つまり、関連付けは結合とほとんど同じです。唯一の違いは、結合はスクリプトが実行されるときに実行され、この結合の結果として論理テーブルが生成されます。それに対して、関連付けは論理テーブルの作成後に実行され、常に論理テーブル間で行われます。

上記の例では、国 (Country)、顧客 (Customer)、取引 (Transaction)、およびメンバーシップ (Membership) の 4 つのリストは、CountryCustomerID の項目によって互いに関連付けられています。

SQL の自然 outer join と比較した QlikView の関連付け

QlikView の関連付けは SQL 自然 outer join に類似しています。ただし、SQLouter join では通常、あるテーブルから別のテーブルへの一方向の関係となるため、関連付けの方がより一般的です。関連付けでは、常に完全な (双方向) 自然 outer join が形成されます。

関連付け項目のレコード数情報

ほとんどの関連付け項目 (2 つ以上のテーブル間に共通する項目) の使用には、いくつかの制限があります。項目が複数のテーブルに存在する場合、QlikView では、データのレコード数の計算に使用するテーブルを特定することが困難になります。

QlikView は、データを分析することにより、計算に含めるメイン テーブルを特定するための確実な方法が存在するどうかを確認しますが (存在する場合もあります)、ほとんどの場合は推測することしかできません。間違った推測は致命的な結果を引き起こす可能性があるため (QlikView が計算ミスをしたように見えます)、関連付け項目のデータ解釈があいまいな場合、プログラムは特定の操作が許可されないように設計されています。

項目関連付けの制限

  1. 項目を表示するリスト ボックスで、レコード数情報を表示することはできません。
  2. 項目の統計ボックスでは、ほとんどの統計エントリに n/a が表示されます。
  3. チャートでは、Distinct 修飾子をアクティブにしない限り、項目のレコード数情報に基づく関数 (SumCount 関数、および Average など) を含む数式を作成することはできません。QlikView はリロードするたびにすべてのチャート式をスキャンして、データ構造の変更により、あいまいさが発生していないか確認します。あいまいな数式が見つかった場合は、警告ダイアログが表示され、その数式は無効になります。問題が修正されるまで、その数式を有効にすることはできません。ログ ファイルが有効にされている場合は、すべてのあいまいな数式がログにリストされます。

回避方法

これらの制限に対しては、簡単な対処方法があります。レコード数が作成されるテーブルから、項目を新しい名前で余分にロードします。次に、レコード数を含むリスト ボックス、統計ボックス、またはチャートの計算で、その新しい項目を使用します。