Przeskocz do zawartości głównej

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 QlikView, która może być kombinacją kilku tabel ze źródła powiązanego przy użyciu instrukcji join. W tym samym wykresie można jednak 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.

      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 miary są tworzone na podstawie tej samej tabeli logicznej, co oznacza, że można 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);
Uwaga: W klauzuli FROM nie jest możliwe odwoływanie się do tabel według aliasu, konieczne jest zatem użycie pełnej nazwy tabeli.

Join the Analytics Modernization Program

Modernize by leveraging your QlikView investment to begin using Qlik Sense on the Cloud.

Want to know more?
Remove banner from view