QlikWorld 2020 Global Conference. Join us to discover how to get the most from your data. Act fast. Register now and save.

Direct Discovery のマルチテーブル サポート

Direct Discovery を使用すると、ANSI SQL 結合機能を使って複数のテーブルやビューをロードできます。単一チャートの中のメジャーは、すべて、QlikView 内の同じ論理テーブルから派生したものでなければなりませんが、派生元には、join ステートメントを介してリンクされたソースからの複数のテーブルの組み合わせを使用できます。ただし、軸については、同じチャートの中で他の複数のテーブルから取得した複数の軸を使用できます。

たとえば、Where 節またはJoin 節のいずれかを使用して、Direct Discovery でロードしたテーブルをリンクできます。

  • 大きなデータセットを使用するメモリ シナリオでは、Direct Discovery を 1 事実/複数軸で展開できます。
  • Direct Discovery は、以下の基準のいずれかを満たす複数のテーブルで使用できます。
    • 結合に使用するキー項目の濃度が低い。
    • 結合に使用するキー項目の濃度が高く、DirectEnableSubquery が true に設定されており、すべてのテーブルが Direct Discovery で結合されている。

      Direct Discovery でのサブクエリの使用

  • Direct Discovery は、すべてのテーブルが Direct Discovery 形式の第 3 正規形シナリオでの展開には適していません。

Where 節を使用した Direct Discovery テーブルのリンク

このスクリプト例では、AW2012 データベースからデータをロードします。ProductProductSubcategory の 2 つのテーブルは、共通の ProductSubCategoryID 項目を使用して Where 節でリンクされています。

Product_Join: DIRECT QUERY DIMENSION [ProductID], [AW2012].[Production].[Product].[Name] as [Product Name], [AW2012].[Production].[ProductSubcategory].[Name] as [Sub Category Name], Color, [AW2012].[Production].[Product].ProductSubcategoryID as [SubcategoryID] MEASURE [ListPrice] FROM [AW2012].[Production].[Product], [AW2012].[Production].[ProductSubcategory] WHERE [AW2012].[Production].[Product].ProductSubcategoryID = [AW2012].[Production].[ProductSubcategory].ProductSubcategoryID ;

Join On 節を使用した Direct Discovery テーブルのリンク

Direct Discovery テーブルは、Join On 節を使用してリンクすることもできます。このステートメント例では、SalesOrderID 項目を介して SalesOrderHeader テーブルを SalesOrderDetail テーブルに結合し、さらに Customer ID 項目を介して Customer テーブルを SalesOrderHeader テーブルに結合します。

この例では、同じ論理テーブルからメジャーを作成するため、それらのメジャーを同じチャートに使用できます。例えば、SubTotalOrderQty を メジャーとしてチャートを作成することができます。

Sales_Order_Header_Join: DIRECT QUERY DIMENSION AW2012.Sales.Customer.CustomerID as CustomerID, AW2012.Sales.SalesOrderHeader.SalesPersonID as SalesPersonID, AW2012.Sales.SalesOrderHeader.SalesOrderID as SalesOrderID, ProductID, AW2012.Sales.Customer.TerritoryID as TerritoryID, OrderDate, NATIVE('month([OrderDate])') as OrderMonth, NATIVE('year([OrderDate])') as OrderYear MEASURE SubTotal, TaxAmt, TotalDue, OrderQty DETAIL DueDate, ShipDate, CreditCardApprovalCode, PersonID, StoreID, AccountNumber, rowguid, ModifiedDate FROM AW2012.Sales.SalesOrderDetail JOIN AW2012.Sales.SalesOrderHeader ON (AW2012.Sales.SalesOrderDetail.SalesOrderID = AW2012.Sales.SalesOrderHeader.SalesOrderID) JOIN AW2012.Sales.Customer ON(AW2012.Sales.Customer.CustomerID = AW2012.Sales.SalesOrderHeader.CustomerID);
注: FROM 節でエイリアスを使用してテーブルを参照することはできません。テーブルのフルネームを使用する必要があります。