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
  • 可以将 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 子句中不能通过别名引用表格,您需要使用完整的表格名称。