GRANVALLEY

ブログBlog

QlikView: 「循環参照」「結合KEY」時の解決方法

公開日 2016年8月9日    最終更新日 2020年3月12日

QlikView® を使いデータモデルを作成する際、異なるテーブルに複数同じ名称の項目が存在する場合、「循環参照」や「結合KEY」と呼ばれる事象が発生します。循環参照や結合KEYが発生すると、パフォーマンスに影響がでてしまう場合があるため、今回は循環参照と結合KEYの説明とその解消方法についてご紹介します。

循環参照とは

循環参照とは3つ以上のテーブルが存在し、キーによって円が形成される場合のことを言います。循環参照が生成されるとリロードを実行した際、以下のような「データベースにループが存在します。」という警告が表示されます。警告メッセージは表示されていても循環参照が存在してのデータの取り込み自体は行われます。

「循環参照」「結合KEY」時の解決方法の図1

テーブルビューアーを開くと、部門番号・納品番号・担当者番号の項目における結合が、点線で表示されていることがわかります。これが疎結合であり、この項目では関連付けされていません。
売上明細テーブルは疎結合テーブルと呼ばれ、何の関連付けもされていないテーブルとなります。データの件数が多いテーブルが、疎結合テーブルに指定される傾向があります。

「循環参照」「結合KEY」時の解決方法の図2

循環参照の解消方法

解消方法のひとつとして項目名を変更する方法があります。今回の場合ですと担当者テーブル、部門テーブルにある「名前」をそれぞれ、下記のように「担当者名」「部門名」に変更することで解消することができます。

「循環参照」「結合KEY」時の解決方法の図3
「循環参照」「結合KEY」時の解決方法の図4

結合KEYとは

結合KEYとは複数項目で結合が行われることで、「$$Syn」から始まるテーブルが生成されることを指します。また結合KEYが生成されるとリロードを実行した際、以下のような一文が表示され、「OrderID」、「ProductID」、「CustomerID」、「EmployeeID」の4つの項目で結合されていることを示します。

「循環参照」「結合KEY」時の解決方法の図5
「循環参照」「結合KEY」時の解決方法の図6

結合KEYの解消方法

結合KEYの解消方法の一つは、項目を削除することで対応できます。例えば「OrderID」以外はOrdersテーブルに不要な場合、以下のように先頭に「//」を入れてコメントアウトすることで不要な項目を制御します。

「循環参照」「結合KEY」時の解決方法の図7
「循環参照」「結合KEY」時の解決方法の図8

これで結合KEYを削除することができました。

他の方法として下記のように4つの項目を結合させたもの「結合KEY」として追加する方法があります。この方法を用いることで複数項目を結合させることが可能になります。

「循環参照」「結合KEY」時の解決方法の図9
「循環参照」「結合KEY」時の解決方法の図10

最後に

今回はQlikViewにおける、結合KEYと循環参照についてとその解消方法についてご紹介しました。それぞれの事象に合わせて使い分けてみてはいかがでしょうか。

※ Qlik、QlikView、Qlik Sense、NPrinting、QlikTech は、QlikTech International AB の商標または登録商標です。
※ Microsoft、MS、Windows、Windows Server、Windows Vista、Excel、AccessおよびPowerPointは、米国 Microsoft Corporationの米国およびその他の国における登録商標です。
※ Windows の正式名称は、Microsoft Windows Operating System です。
※ その他の会社名、製品名は各社の登録商標または商標です。
※ 記事の内容は記事公開時点での情報です。閲覧頂いた時点では異なる可能性がございます。