Supporto di più tabelle in Direct Discovery

È possibile utilizzare Direct Discovery per caricare più tabelle o viste mediante la funzionalità di unione ANSI SQL. In un singolo grafico è possibile estrarre tutte le misure dalla stessa tabella logica in Qlik Sense, ma questa operazione può essere eseguita con la combinazione di più tabelle dalla sorgente utilizzando le istruzioni join. Tuttavia, è possibile utilizzare le dimensioni estratte da altre tabelle contenute nello stesso grafico.

Ad esempio, è possibile collegare le tabelle caricate con Direct Discovery mediante una clausola Where o Join.

  • Se la memoria contiene set di dati di grandi dimensioni, Direct Discovery può essere utilizzato sia per una singola misura che per dimensioni multiple.
  • Direct Discovery può essere utilizzato con più tabelle che presentano corrispondenza con uno dei criteri seguenti:
    • La cardinalità del campo chiave nell'unione è bassa.
    • La cardinalità del campo chiave nell'unione è alta, DirectEnableSubquery è impostato su true e tutte le tabelle sono state unite con Direct Discovery.

      Per ulteriori informazioni, vedere Utilizzo delle sottoquery con Direct Discovery.

  • Direct Discovery non è adatto alla distribuzione in uno scenario Terza forma normale con tutte le tabelle nella forma di Direct Discovery.

Collegamento di tabelle Direct Discovery con una clausola Where

In questo script di esempio vengono caricati i dati dal database AW2012. Le tabelle Product e ProductSubcategory vengono collegate con una clausola Where mediante il campo comune 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 ;

Collegamento di tabelle Direct Discovery con clausole Join On

È possibile utilizzare le clausole Join On per collegare le tabelle Direct Discovery. In questa istruzione di esempio la tabella SalesOrderHeader viene unita alla tabella SalesOrderDetail tramite il campo SalesOrderID e la tabella Customer viene unita alla tabella SalesOrderHeader tramite il campo Customer ID.

In questo esempio vengono create misure dalla stessa tabella logica, il che significa che è possibile utilizzarle nello stesso grafico. Ad esempio, è possibile creare un grafico con SubTotal e OrderQty come misure.

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