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 cargadas por medio de mapping load o mapping select se tratan de manera diferente a otras tablas. Se almacenan en un área aparte de la memoria, y se usan solo 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. aparece listado en 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 una tabla de correspondencia con la etiqueta CountryMap.
La sentencia map habilita la asignación del campo Country usando la tabla de correspondencia cargada previamente.CountryMap.
La sentencias LOAD cargan las tablas CountryA y CountryB. Estas tablas, que se concatenarán debido a que tienen el 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 correspondencia. Los valores de campo US, U.S. y United States serán encontrados y reemplazados por los valores de la segunda columna de la tabla de correspondencia, 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 Qlik Sense. Por lo 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 Qlik Sense.
Para deshabilitar la correspondencia use la sentencia unmap.
Para mapear a nivel de expresión, use la función applymap.
Para mapear a un nivel de subcarpeta, use la función mapsubstring.