Saltar al contenido principal Saltar al contenido complementario

Usar mapping como alternativa a join

El prefijo Join en Qlik Sense es una forma potente de combinar varias tablas de datos en el modelo de datos.

Una desventaja es que las tablas combinadas pueden llegar a ser grandes que podrían crear problemas de rendimiento. Una alternativa a Join en aquellas situaciones en las que necesita buscar un valor único de otra tabla es utilizar la asignación en su lugar. De este modo se puede evitar la carga de datos innecesarios que ralentizan los cálculos y que puede crear errores de cálculo, ya que las uniones mediante join pueden cambiar el número de registros en las tablas.

Una tabla de correspondencia se compone de dos columnas: un campo de comparación (entrada) y un campo de valores de correspondencia (salida).

En este ejemplo, tenemos una tabla de pedidos (Orders) y necesitamos conocer los países de los clientes, que están almacenados en la tabla de clientes (Customers).

Tabla de datos Orders
OrderIDOrderDateShipperIDFreightCustomerID
129872007-12-011273
129882007-12-011654
129892007-12-022322
129902007-12-031763
Tabla de datos Customers
CustomerIDNameCountry...
1DataSalesSpain...
2BusinessCorpItaly...
3TechCoGermany...
4MobechoFrance...

Para buscar el país (Country) de un cliente, necesitamos una tabla de correspondencia con el siguiente aspecto:

Tabla de correspondencia
CustomerIDCountry
1Spain
2Italy
3Germany
4France

La tabla de correspondencia, a la cual denominaremos MapCustomerIDtoCountry, se define en el script de la siguiente manera:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

El siguiente paso es aplicar la asignación de correspondencias, mediante el uso de la función ApplyMap al cargar la tabla de pedidos:

Orders: LOAD *, ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country From Orders ;

El tercer parámetro de la función ApplyMap se usa para definir qué se devolverá cuando un valor no se encuentre en la tabla de correspondencia, en este caso Null().

La tabla resultante tendrá el siguiente aspecto:

Tabla resultante
OrderIDOrderDateShipperIDFreightCustomerIDCountry
129872007-12-011273Germany
129882007-12-011654France
129892007-12-022322Italy
129902007-12-031763Germany

Más información

 

¿Esta página le ha sido útil?

Si encuentra algún problema con esta página o su contenido (errores tipográficos, pasos que faltan o errores técnicos), no dude en ponerse en contacto con nosotros.