中的多表格支援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 載入資料。Product 和 ProductSubcategory 表格是使用 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 表格。
在此範例中,我們從相同邏輯表格建立量值,這表示我們可以在相同圖表中使用這些量值。例如,您可使用 SubTotal 和 OrderQty 作為量值來建立圖表。
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);