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 enkele grafiek moet alle metingen worden afgeleid van dezelfde logische tabel in QlikView, 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 dezelfde grafiek.

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

  • 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 dezelfde grafiek kunnen gebruiken. Zo kunt u bijvoorbeeld een grafiek 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);
Opmerking: Het is niet mogelijk om per alias naar tabellen te verwijzen in de FROM-clausule. U moet de volledige tabelnaam gebruiken.