Ondersteuning voor meerdere tabellen in Direct Discovery

U kunt Direct Discovery gebruiken om meer dan één tabel of weergave te laden met behulp van ANSI SQL join-functionaliteit. In een enkel diagram moet alle metingen worden afgeleid van dezelfde logische tabel in Qlik Sense, maar dit kan een combinatie van meerdere tabellen uit de bron zijn die zijn gekoppeld via join-opdrachten. U kunt echter dimensies gebruiken die afkomstig zijn uit andere tabellen in hetzelfde diagram.

Zo kunt u bijvoorbeeld de tabellen koppelen die zijn geladen met Direct Discovery via een Where-clausule of een Join-clausule.

  • Direct Discovery kan worden geïmplementeerd in een scenario in het geheugen met één feit en meerdere dimensies met grote gegevenssets.
  • Direct Discovery kan worden gebruikt met meer dan één tabel die voldoet aan een of meer van de volgende criteria:
    • De cardinaliteit van het sleutelveld in de join is laag.
    • De cardinaliteit van het sleutelveld in de join is hoog, DirectEnableSubquery is ingesteld op true en alle tabellen zijn samengevoegd met Direct Discovery.

      Zie Subquery's gebruiken met Direct Discovery voor meer informatie.

  • Direct Discovery is niet geschikt voor implementatie in een scenario met derde normaalvorm met alle tabellen in Direct Discovery-vorm.

Direct Discovery-tabellen koppelen met een Where-clausule

In dit voorbeeldscript laden we gegevens uit de database AW2012. De tabellen Product en ProductSubcategory zijn gekoppeld met een Where-clausule via het gemeenschappelijke veld 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-tabellen koppelen met Join On-clausules

U kunt ook Join On-clausules gebruiken om Direct Discovery-tabellen te koppelen. In deze voorbeeldopdracht voegen we de tabel SalesOrderHeader toe aan de tabel SalesOrderDetail via het veld SalesOrderID en voegen we tevens de tabel Customer toe aan de tabel SalesOrderHeader via het veld Customer ID.

In dit voorbeeld maken we metingen met behulp van dezelfde logische tabel, hetgeen betekent dat wij deze in hetzelfde diagram kunnen gebruiken. Zo kunt u bijvoorbeeld een diagram maken met SubTotal en OrderQty als metingen.

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