# 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](https://help.qlik.com/es-ES/sense/November2024/Subsystems/Hub/Content/Sense_Hub/DirectDiscovery/using-subqueries-direct-discovery.htm).
* 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);
```