Saltar al contenido principal Saltar al contenido complementario

Usar la correspondencia como alternativa a la unión

El prefijo Join de QlikView constituye un potente método para combinar varias tablas de datos en el modelo de datos. Una desventaja es que las tablas combinadas pueden llegar a ser grandes y crear problemas de rendimiento. Una alternativa a Join en situaciones en las que tenga que buscar un único valor de otra tabla es utilizar la correspondencia 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 consta de dos columnas: un campo de comparación (entrada) y un campo de valor de correspondencia (salida).

En este ejemplo tenemos una tabla de pedidos (Orders) y necesitamos saber el país del cliente, que se almacena en la tabla de clientes (Customers).

Orders data table
OrderID OrderDate ShipperID Freight CustomerID
12987 2007-12-01 1 27 3
12988 2007-12-01 1 65 4
12989 2007-12-02 2 32 2
12990 2007-12-03 1 76 3
Customers data table
CustomerID Name Country ...
1 DataSales Spain ...
2 BusinessCorp Italy ...
3 TechCo Germany ...
4 Mobecho France ...

Para buscar el país (Country) de un cliente, se necesita una tabla de correspondencia con este aspecto:

Country mapping table
CustomerID Country
1 Spain
2 Italy
3 Germany
4 France

La tabla de correspondencia, a la que llamamos MapCustomerIDtoCountry, se define en el script de la siguiente forma:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

El siguiente paso consiste en aplicar la correspondencia, mediante la ApplyMap función, al cargar la tabla de pedidos:

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

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

La tabla resultante tendrá el siguiente aspecto:

Result mapping table
OrderID OrderDate ShipperID Freight CustomerID Country
12987 2007-12-01 1 27 3 Germany
12988 2007-12-01 1 65 4 France
12989 2007-12-02 2 32 2 Italy
12990 2007-12-03 1 76 3 Germany

¿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.

Únase al Programa de modernización de la analítica

Remove banner from view

Modernícese sin comprometer sus valiosas aplicaciones de QlikView con el Programa de modernización de la analítica. Haga clic aquí para obtener más información o contactar con nosotros: ampquestions@qlik.com