Qlikview-circular-reference
提供:Dev Guides
QlikView-循環参照
- 循環参照*は、2つ以上の異なるパスを使用して、あるテーブルから別のテーブルに移動できる場合に発生します。 これは、列を使用してTable1をTable2に直接結合できること、または最初にTable1をTable3に結合してからtable3をTable2に結合することもできることを意味します。 これにより、これら3つのテーブルすべてをロードするデータモデルによって形成される出力に誤った結果が生じる可能性があります。 QlikViewは、循環参照を認識すると、そのようなデータがメモリにロードされるのを防ぎます。
入力データ
次の3つのCSVデータファイルを考えてみましょう。これらのファイルは、詳細な説明の入力として使用されます。
SalesCountries:
ProductID,ProductCategory,Country,SaleAmount
1,Outdoor Recreation,Italy,4579
2,Clothing,USA,4125
3,Costumes & Accessories,South Korea,6521
4,Athletics,Japan,4125
5,Personal Care,Brazil,5124
6,Arts & Entertainment,China,1245
7,Hardware,South America,456
8,Home & Garden,Peru,241
9,Food,India,1247
10,Home & Garden,Singapore,5462
11,Office Supplies,Hungary,577
ProductCountry:
ProductID, Country
3,Brazil
3,China
2,Korea
1,USA
2,Singapore
7,Sri Lanka
1,Italy
スクリプトをロード
*Control + E* を押すと呼び出されるスクリプトエディターを使用して、上記の入力データを読み込みます。 オプション *Table Files* を選択し、入力ファイルを参照します。
データロード
上記のスクリプトを作成した後、コマンド Control + R を使用してQlikViewのメモリにデータをロードします。 これは、ロードされるテーブルに循環ループが存在することを示すエラープロンプトが表示されるときです。
データ・モデル
上記の警告の正確な原因を見つけるために、テーブルビューアーのメニューコマンド Control + T を使用してデータモデルを確認できます。 次の画面が表示され、循環参照が明確に表示されます。 ここで、RegionCountryとSalesRegionの間の結合は、フィールド Region を使用して直接実現できます。 フィールド Country を使用して最初にProductCountryテーブルに移動し、次にProdcutIDをSalesregionにマッピングすることでも実現できます。
循環参照の解決
上記の循環参照は、QlikViewが列名を使用してテーブル間の関連付けを自動的に形成しないように、データセットの列の名前を変更することで解決できます。 このため、RegionCountryのcountry列の名前をSalesCountryに変更します。 データセットProdcuCountryで、Country列の名前をProductCountryに変更します。
修正されたデータモデル
上記の列の名前を変更した後の修正済みデータモデルは、コマンド Control + T を使用して表示できます。 これで、テーブル間の関係がループを形成していないことがわかります。
*Control + R* を押してデータをリロードしても、警告は表示されなくなり、このデータを使用してレポートを作成できます。