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

Direct Discovery を使用すると、ANSI SQL 結合機能を使って複数のテーブルやビューをロードできます。単一チャートの中のメジャーは、すべて、Qlik Sense 内の同じ論理テーブルから派生したものでなければなりませんが、派生元には、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);