Unterstützung mehrerer Tabellen in Direct Discovery

Sie können Direct Discovery verwenden, um mehr als eine Tabelle zu laden oder mit der Verknüpfungsfunktion von ANSI SQL anzuzeigen. In einem einzelnen Diagramm müssen alle Kennzahlen aus derselben internen Tabelle in Qlik Sense abgeleitet sein, aber diese kann eine Kombination mehrerer, über Join-Befehle verbundener Tabellen aus einer Quelle sein. Sie können jedoch aus anderen Tabellen bezogene Dimensionen im gleichen Diagramm verwenden.

Zum Beispiel können Sie die mit Direct Discovery durch eine Where- oder Join-Bedingung geladenen Tabellen verbinden.

  • Direct Discovery kann in einem einzelnen Einzelwert/Mehrfachdimension-In-Memory-Szenario mit großen Datensätzen implementiert werden.
  • Direct Discovery kann mit mehr als einer Tabelle verwendet werden, wenn eines der folgenden Kriterien erfüllt ist:
    • Die Kardinalität des Schlüsselfelds im Join ist niedrig.
    • Die Kardinalität des Schlüsselfelds im Join ist hoch, DirectEnableSubquery ist auf "true" gesetzt und alle Tabellen wurden mit Direct Discovery zusammengeführt.

      Weitere Informationen finden Sie unter Verwenden von Unterabfragen in Direct Discovery.

  • Direct Discovery ist nicht geeignet für die Implementierung in einem Dritte-Normalform-Szenario, wenn alle Tabellen in der Direct Discovery-Form vorliegen.

Verbinden von Direct Discovery-Tabellen mit einer Where-Bedingung

In diesem Beispielskript laden wir Daten aus der Datenbank AW2012. Die Tabellen Product und ProductSubcategory werden mit einer Where-Bedingung mithilfe des gemeinsamen Felds ProductSubCategoryID verbunden.

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 ;

Verbinden von Direct Discovery-Tabellen mit Join On-Bedingungen

Sie können auch Join On-Bedingungen zum Verbinden von Direct Discovery-Tabellen verwenden. In diesem Beispielbefehl verknüpfen wir die Tabelle SalesOrderHeader mit der Tabelle SalesOrderDetail über das Feld SalesOrderID. Ebenso verknüpfen wir die Tabelle Customer mit der Tabelle SalesOrderHeader über das Feld Customer ID.

In diesem Beispiel erstellen wir Kennzahlen aus der gleichen internen Tabelle, was bedeutet, wir können sie im gleichen Diagramm verwenden. Zum Beispiel können Sie ein Diagramm mit SubTotal und OrderQty als Kennzahlen erstellen.

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);