Direct Discovery 中的多表格支援

透過 Direct Discovery,您可使用 ANSI SQL 聯結功能載入更多表格或檢視。在單一圖表中,所有量值必須衍生自 Qlik Sense 中的相同邏輯表格,但可以是透過 join 陳述式連結的來源,由數個表格所組成。不過,您可在相同圖表中使用源自其他表格的維度。

例如,您可使用 Where 子句或 Join 子句,連結使用 Direct Discovery 所載入的表格。

  • 在帶有大資料集的記憶體案例中,可以採用單個事實/多維度的方式部署 Direct Discovery
  • Direct Discovery 可以與符合以下任何標準的多個表格配合使用:
    • 聯結中索引鍵欄位的基數低。
    • 聯結中索引鍵欄位的基數高,DirectEnableSubquery 設為 true,並且所有表格均已與 Direct Discovery 聯結。

      如需詳細資訊,請參閱 使用子查詢和 Direct Discovery

  • Direct Discovery 不適合在所有表格均為 Direct Discovery 型式的第三正規化型式案例中部署。

連結 Direct Discovery 表格與 Where 子句

在此指令碼範例中,我們從資料庫 AW2012 載入資料。ProductProductSubcategory 表格是使用 Where 子句透過共同的 ProductSubCategoryID 欄位所連結的。

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 ;

連結 Direct Discovery 表格與 Join On 子句

您也可以使用 Join On 子句連結 Direct Discovery 表格。在此陳述式範例中,我們透過 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);