Limpieza de datos
Cuando cargamos datos de diferentes tablas, observamos que los nombres de los valores de campos no han sido asignados siempre de forma consistente. Esta falta de consistencia, aparte de ser molesta, impide también las asociaciones, es decir, que se hace imprescindible resolver el problema. La forma elegante de solucionar esto es creando una tabla de correspondencias que compare los valores de campo.
Tablas de correspondencia
Las tablas que han sido cargadas mediante las sentencias mapping load o mapping select reciben un trato diferente de las demás tablas. Se almacenan en un área aparte de la memoria, y se usan sólo como tablas de correspondencia durante la ejecución del script. Después de la ejecución del script se borran automáticamente.
Reglas:
- Una tabla de correspondencia debe tener dos columnas, la primera con los valores de la comparación y la segunda con los valores que se desea enlazar.
- Las dos columnas deben tener nombre, pero los nombres no tienen importancia por sí mismos. Los nombres de las columnas no tienen conexión con los nombres de campo en las tablas internas regulares.
Utilizar una tabla de correspondencia
Cuando se cargan varias tablas con listas de países, ocurre a veces que se encuentra el mismo país con nombres diferentes. En este ejemplo, U.S.A. figura en la lista como US, U.S., y United States.
Para evitar la aparición de tres registros diferentes que denotan el mismo país de los Estados Unidos de América en la tabla concatenada, se puede crear una tabla parecida a la ya mostrada y cargarla como tabla de correspondencia (o enlace).
El script completo presentará el siguiente aspecto:
CountryMap:
Mapping LOAD x,y from MappingTable.txt
(ansi, txt, delimiter is ',', embedded
labels);
Map Country using CountryMap;
LOAD Country,City from CountryA.txt
(ansi, txt, delimiter is ',', embedded labels);
LOAD Country, City from CountryB.txt
(ansi, txt, delimiter is ',', embedded labels);
La sentencia mapping carga el archivo MappingTable.txt como tabla de correspondencia con la etiqueta CountryMap.
La sentencia map permite la correspondencia del campo Country utilizando la tabla de correspondencia previamente cargada CountryMap.
Las sentencias LOAD cargan las tablas CountryA y CountryB. Estas tablas, que serán concatenadas por el hecho de que disponen de un mismo conjunto de campos incluyen el campo Country), cuyos valores de campo se compararán con los de la primera columna de la tabla de enlace. Los valores US, U.S., y United States serán buscados y reemplazados por los valores de la segunda columna de la tabla de enlace, es decir USA.
La correspondencia automática es el último paso en la cadena de eventos que lleva al campo que se está almacenando en la tabla de QlikView. En general, el orden de eventos de una típica sentencia LOAD o SELECT es el siguiente:
- Evaluación de las expresiones
- Renombrado de campos mediante as
- Renombrado de campos mediante alias
- Calificación del nombre de tabla, si procede
- Enlazar datos en nombres de campo que coinciden
Esto significa que la correspondencia no se hace cada vez que se encuentra un nombre de campo como parte de una expresión, sino más bien cuando el valor se almacena con el nombre de un campo de la tabla de QlikView.
Para desactivar la correspondencia, utilice la sentencia unmap.
Para enlazar a nivel de expresión, use la función applymap.
Para enlazar a nivel de expresión, use la función mapsubstring.