Suporte a várias tabelas no Direct Discovery

É possível usar o Direct Discovery para carregar mais de uma tabela ou exibição usando a funcionalidade de junção ANSI SQL. Em um único gráfico, todas as medidas devem ser derivadas da mesma tabela lógica do Qlik Sense, mas isto pode ser uma combinação de várias tabelas da origem vinculadas por comandos de junção. No entanto, é possível usar dimensões provenientes de outras tabelas do mesmo gráfico.

Por exemplo, você pode vincular as tabelas carregadas com o Direct Discoveryusando uma cláusula Where ou Join.

  • Direct Discovery pode ser implantado em um cenário de fato único/dimensões múltiplas de memória com conjuntos de dados grandes.
  • Direct Discovery pode ser usado com mais de uma tabela que deve corresponder a qualquer um dos seguintes critérios:
    • A cardinalidade do campo chave na junção é baixa.
    • A cardinalidade do campo chave na junção é alta, DirectEnableSubquery é definida como verdadeira e todas as tabelas foram unidas com Direct Discovery.

      Para obter mais informações, consulte Usando subconsultas com o Direct Discovery.

  • Direct Discovery não é adequado para implantação em um cenário de Terceira forma normal com todas as tabelas na forma Direct Discovery.

Vinculando tabelas do Direct Discovery com uma cláusula Where

Neste script de exemplo, carregamos os dados do banco de dados AW2012. As tabelas Product e ProductSubcategory estão vinculadas com uma cláusula Where usando o campo comum 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 ;

Vinculando tabelas do Direct Discovery com cláusulas Join On

Também é possível usar cláusulas Join On para vincular tabelas do Direct Discovery. Neste comando de exemplo, unimos a tabela SalesOrderHeader à tabela SalesOrderDetail por meio do campo SalesOrderID e também unimos a tabela Customer à tabela SalesOrderHeader por meio do campo Customer ID.

Neste exemplo, criamos medidas da mesma tabela lógica, o que significa que podemos usá-las no mesmo gráfico. Por exemplo, é possível criar um gráfico com SubTotal e OrderQty como medidas.

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