Saltar al contenido principal Saltar al contenido complementario

Usar la correspondencia como alternativa a la unión

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 muy extensas y 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 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
IDPedidoFechaPedidoIDTransporteFleteIDCliente
129872007-12-011273
129882007-12-011654
129892007-12-022322
129902007-12-031763
Tabla de datos Customers
IDClienteNombrePaís:...
1DatosVentasEspaña...
2BusinessCorpItalia...
3TechCoAlemania...
4MobechoFrancia...

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

Tabla de correspondencia
IDClientePaís:
1España
2Italia
3Alemania
4Francia

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
IDPedidoFechaPedidoIDTransporteFleteIDClientePaís:
129872007-12-011273Alemania
129882007-12-011654Francia
129892007-12-022322Italia
129902007-12-031763Alemania

Más información

 

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.