循環参照を理解し解決

データ構造に循環参照 (「ループ」) が存在する場合、テーブルは 2 つの項目間に複数の関連付けパスが存在するように関連付けられます。

このようなデータ構造は、データの解釈にあいまいさが生じるため、できる限り避ける必要があります。

2 つの項目間の関連付けのパスが 2 つ以上存在するため、循環参照を含む 3 つのテーブル。
Three tables with a circular reference.

Qlik Sense は、疎結合テーブルを使用してループを壊すことにより、循環参照の問題を解決します。Qlik Sense がロード スクリプトの実行中に循環データ構造を見つけると、警告ダイアログが表示され、1 つ以上のテーブルが疎結合として設定されます。通常、Qlik Sense は、ループ内の最も長いテーブルを疎結合しようとします。多くの場合、トランザクション テーブルが最も長いため、通常はこのテーブルが疎結合されます。データ モデル ビューアでは、疎結合テーブルは、他のテーブルと赤い点線でリンクされています。

Example:  

次の情報を含む 3 つのテーブルからデータがロードされます。

  • 国代表サッカー チームの名前
  • 地方のサッカー クラブ
  • ヨーロッパ諸国の都市
Excel のソース データ テーブルの外観

Tables in Excel.

このデータ構造は、項目名 Team が国代表チームと地方クラブの 2 つの異なる目的で使用されているため、あまりよくありません。テーブル内のデータで非現実的なロジック状況が発生します。

テーブルを Qlik Sense にロードする際、Qlik Sense はどのデータ接続が最も重要でないかを判定し、このテーブルを疎結合にします。

[データ モデル ビューア] を選択して、Qlik Sense がデータ接続の関連性をどのように解釈しているかを確認します。

循環参照を赤い点線で示した状態
Circular references between tables.

これで、所在する都市と国が含まれているテーブルが、異なる国の代表チームのテーブルと異なる都市の地方クラブのテーブルに対して疎結合になります。

循環参照の解決

循環参照が発生した場合は、同一の名前を持つ項目のいずれかに一意の名前を割り当てて、データ ロード スクリプトを編集する必要があります。

次の手順を実行します。

  1. データ ロード エディターを開きます。
  2. 名前が重複する項目のどちらか一方で LOAD ステートメントを編集します。

    この例では、地方チームとその都市が含まれているテーブルの LOAD ステートメントに、Team の新しい名前が含まれています (例: LocalClub)。更新された LOAD ステートメントは以下のようになります。

    LOAD City, Team as LocalClub

  1. ツールバーの ° をクリックして、アプリにデータをリロードします。

これですべてのテーブルで機能するロジックが完成しました。この例では、Germany が選択された場合、ドイツの代表チームとドイツの都市、各都市の地元クラブが関連付けられます。

Sheet with four tables.

[データ モデル ビューア] を開くと、疎結合された結びつきが通常の結びつきに置き換えられていることがわかります。

Three tables with regular connections in the Data model viewer.