Obsługa wielu tabel w Direct Discovery

W ramach Direct Discovery można załadować więcej niż jedną tabelę lub widok za pomocą instrukcji join ANSI SQL. W pojedynczym wykresie wszystkie miary muszą pochodzić z tej samej tabeli logicznej Qlik Sense, która może być kombinacją kilku tabel ze źródła powiązanego przy użyciu instrukcji join. Jednak w tym samym wykresie można korzystać z wymiarów pochodzących z innych tabel.

Na przykład tabele załadowane za pomocą Direct Discovery można powiązać przy użyciu klauzuli Where lub Join.

  • Direct Discovery można wdrożyć w pamięci głównej w ramach scenariusza pojedynczego lub wielowymiarowego z dużymi zestawami danych.
  • Direct Discovery można stosować z więcej niż jedną tabelą, która spełnia dowolne z poniższych kryteriów:
    • Liczebność pola klucza w instrukcji join jest niska.
    • Liczebność pola klucza w instrukcji join jest wysoka, parametr DirectEnableSubquery ma wartość true oraz wszystkie tabele zostały połączone za pomocą Direct Discovery.

      Więcej informacji zawiera temat Korzystanie z zapytań podrzędnych w Direct Discovery.

  • Direct Discovery nie powinno się wdrażać w ramach scenariusza trzeciej postaci normalnej ze wszystkimi tabelami w postaci Direct Discovery.

Łączenie tabel Direct Discovery z klauzulą Where

W przykładowym skrypcie dane są ładowane z bazy danych AW2012. Tabele Product i ProductSubcategory są powiązane za pomocą klauzuli Where przy użyciu wspólnego pola 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 ;

Łączenie tabel Direct Discovery z klauzulami Join On

W celu tworzenia powiązań tabel Direct Discovery można również korzystać z klauzul Join On. W tej przykładowej instrukcji tabela SalesOrderHeader jest powiązywana z tabelą SalesOrderDetail za pośrednictwem pola SalesOrderID, a tabela Customer jest powiązywana z tabelą SalesOrderHeader za pośrednictwem pola Customer ID.

W tym przykładzie tworzymy miary z tej samej tabeli logicznej, co oznacza, że możemy z nich korzystać w tym samym wykresie. Na przykład można utworzyć wykres, w którym miarami będą SubTotal i 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);