Direct Discovery中的多表格支援

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

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

  • 可以將 Direct Discovery部署到含有大型資料集之記憶體案例中的單一事實/多維度中。
  • Direct Discovery可以和多個符合下列任一條件的表格搭配使用:
    • 聯結中索引鍵欄位的基數很低。
    • 聯結中索引鍵欄位的基數很高,DirectEnableSubquery設為 True,而且所有表格都已和 Direct Discovery 聯結。

      請參閱: 透過 Direct Discovery使用子查詢

  • 在含有 Direct Discovery表單中所有表格的第三個一般表單案例中,Direct Discovery 並不適合用來部署。

使用 Where子句連結 Direct Discovery 表格

在此指令碼範例中,我們從資料庫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 ;

使用 Join On子句連結 Direct Discovery 表格

您也可以使用 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);
備註: 注意:您無法在 FROM子句中由別名參考表格,必須使用完整的表格名稱。