Soporte multitabla en Direct Discovery

Puede usar Direct Discovery para cargar más de una tabla o vista usando la funcionalidad de la sentencia join de ANSI SQL. En un único gráfico, todas las medidas deben provenir de la misma tabla lógica en Qlik Sense, pero esto puede ser una combinación de varias tablas de una fuente en la que hayan sido enlazadas mediante sentencias join. Sin embargo, puede utilizar dimensiones que provengan de otras tablas en el mismo gráfico.

Por ejemplo, podemos enlazar las tablas cargadas con Direct Discovery usando una cláusula Where o una cláusula Join.

  • Direct Discovery se puede desplegar en un escenario de múltiples dimensiones o un único hecho, en memoria y con grandes conjuntos de datos.
  • Direct Discovery puede utilizarse con más de una tabla que cumpla uno cualquiera de los siguientes criterios:
    • La cardinalidad del campo clave en el enlace join es baja.
    • La cardinalidad del campo clave en el enlace join es alta, DirectEnableSubquery se ha configurado como verdadero y todas las tablas se han enlazado mediante Direct Discovery.

      Para más información, vea Utilizar subconsultas con Direct Discovery.

  • Direct Discovery no es adecuado para el desarrollo en un escenario de Tercera Forma Normal (TNF) con todas las tablas en forma Direct Discovery.

Enlazar tablas Direct Discovery con una cláusula Where

En este script de ejemplo, cargamos datos desde la base de datos AW2012. Las tablas Product y ProductSubcategory se enlazan mediante una cláusula Where usando el campo común 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 ;

Enlazar tablas Direct Discovery con cláusulas Join On

También podemos utilizar cláusulas Join On para enlazar tablas de Direct Discovery. En esta sentencia de ejemplo unimos la tabla SalesOrderHeader con la tabla SalesOrderDetail mediante el campo SalesOrderID y también unimos la tabla Customer con la tabla SalesOrderHeader mediante el campo Customer ID.

En este ejemplo, crearemos medidas a partir de la misma tabla lógica, lo que significa que podemos utilizarlas en el mismo gráfico. Por ejemplo, puede crear un gráfico con SubTotal y 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);