¿Cómo utilizar VLOOKUP y la funcionalidad Me gusta en QlikView?

Contenidos

Siempre que interactúo con un usuario de Qlikview, que ha migrado desde Excel recientemente, una de las consultas más comunes que se reciben es:

«¿Cómo aplico VLOOKUP () en Qlikview?»

Para empezar, BUSCARV es la forma excelente de unir 2 conjuntos de datos a través de una clave común. Es algo similar a las combinaciones en SQL.

¿Por qué necesitamos una función externa como BUSCARV () en Qlikview?

Siempre que importa un conjunto de datos externo en Qlikview, busca columnas comunes y realiza uniones por sí solo. Por lo tanto, las personas algo familiarizadas con Qlikview podrían preguntarse, ¿por qué necesitamos una función similar a VLOOKUP () en primer lugar?

La respuesta es construir modelos de datos eficientes. Permítanme explicarles una situación de la vida real a la que me había enfrentado en mis primeros días con Qlikview. Algunas personas con experiencia me habían dicho que siempre es aconsejable minimizar la cantidad de tablas en su modelo de datos. En mi primera asignación como desarrollador de Qlikview, utilicé múltiples combinaciones y asociaciones. Como resultado, mi modelo de datos se volvió demasiado complejo y difícil de entender. No pude identificar y corregir errores fácilmente (un ejemplo de modelo de datos similar se muestra en la figura a continuación como referencia).

A medida que pasaba más tiempo con Qlikview, encontré el uso de la tabla de mapeo con la función Applymap () y descubrí que eran similares a VLOOKUP (), donde recuperamos información de un conjunto de datos de mapeo a un conjunto de datos primario. Esto nos ayuda a simplificar nuestros modelos de datos de manera significativa.

fourth-1942975

En Qlikview, las uniones se pueden realizar utilizando Association, Join y Applymap. Applymap funciona de manera similar a BUSCARV con algunas características adicionales. Por ejemplo, si BUSCARV no encuentra una coincidencia en la tabla de mapeo, devuelve «#NA». Applymap, por otro lado, puede devolver cadenas / números / campos de una tabla similar, en caso de que no haya coincidencias. También podemos escribir Applymap anidado, para hacer referencia a otra tabla de mapeo, en caso de que no se encuentre el valor.

¿Cómo podemos definir la tabla de mapeo?

La tabla de mapeo debe tener dos columnas: la primera para la clave de búsqueda y la segunda para el valor de cambio. Las tablas de mapeo se almacenan por separado en la memoria y se usan solo durante la ejecución del script. Después de la ejecución del script, se eliminan automáticamente.

La sintaxis para cargar una tabla de mapeo es similar a la instrucción LOAD con un prefijo adicional (MAPPING) antes de LOAD. La fuente de la tabla de mapeo puede ser una base de datos, una hoja de cálculo, una tabla residente, una tabla en línea o un archivo QVD:

Designation_desc:
 Mapping LOAD Designation_Code,
 Designation_Desc
 FROM
 Data_set.xlsx
 (ooxml, embedded labels, table is Designation);

Función y sintaxis Applymap ():

La sintaxis es muy similar a una función de búsqueda: toma un valor como entrada, verifica si este valor existe en una tabla de mapeo y devuelve el valor correspondiente de la segunda columna de la tabla de mapeo. La función Applymap siempre se usa después de definir una tabla de mapeo:

Sintaxis:

aplicar mapa‘mapname’, clave de búsqueda [ , defaultexpr ] )

dónde:

mapname es el nombre de la tabla de mapeo, que ya se ha creado a través del carga de mapeo. Su nombre debe ir entre comillas simples.

clave de búsqueda es la expresión, cuyo resultado debe mapearse.

defaultexpr es una expresión opcional, que se utilizará como valor de asignación predeterminado, si la tabla de asignación no contiene un valor coincidente para la clave de búsqueda. Si no se proporciona un valor predeterminado, el valor de búsqueda se devolverá tal cual.

applymap2-9636106

¿Cómo podemos utilizar Applymap?

Veamos un escenario, donde tenemos un conjunto de datos de empleados con su código de empleado, código de designación, salario y estado civil. Además, necesita la descripción de la designación del empleado y los detalles de la bonificación, que están disponibles en una tabla diferente. Desea calcular el pago total de un empleado e informarlo junto con su designación (Pago total = Salario + Bonificación). En SQL, debe unir las tablas necesarias para obtener información adicional. En Excel, podemos usar la función Vlookup () para hacer esto. Aquí, usaremos la función Applymap para mapear la BONIFICACIÓN y la DESCRIPCIÓN DE LA DESIGNACIÓN de la tabla de mapeo respectiva.

first1-4457509

Tenga en cuenta que este problema también se puede resolver a través de Join o Association. Resolveremos esto usando Applymap en este artículo.

Paso 1:

En nuestro script QlikView, primero definiremos las tablas de mapeo:

  • Bonus – asigna EmpCode a Bonus
  • Designation_desc – asigna DesignationCode a la descripción de la designación
Bonus:
 Mapping LOAD EmpCode,
 Bonus
 FROM Data_set.xlsx (ooxml, embedded labels, table is Bonus);
Designation_desc:
 Mapping LOAD DesignationCode,
 Designation_Desc
 FROM Data_set.xlsx (ooxml, embedded labels, table is Designation);

Paso 2:

El segundo paso es utilizar esta información al leer la tabla de empleados:

Employee:
 LOAD EmpCode,
 Gender,
 MaritalStatus,
 DesignationCode,
 Salary,
 ApplyMap('Bonus',EmpCode,0) as Bonus,
 ApplyMap('Designation_desc',DesignationCode,'Unknown') as designation_Desc
 FROM Data_set.xlsx (ooxml, embedded labels, table is Main);

Ahora, hemos unido los campos Descripción de bonificación y designación con el conjunto de datos del empleado, sin usar una combinación o asociación.

Beneficios de usar ApplyMap:

  • Varias tablas en su modelo de datos no es algo bueno. Por lo tanto, no desea una situación en la que tenga muchas búsquedas unidas a su tabla maestra. Esto se puede resolver creando una tabla de mapeo usando ApplyMap.
  • La tabla de mapeo solo existe durante la carga, podemos llamarla como tabla temporal.
  • ApplyMap tiene excelentes características como tercer parámetro (opcional). El tercer parámetro le permite devolver algo más útil, cuando el valor de búsqueda no se encuentra en la tabla de mapeo. El tercer parámetro puede ser cadena, número, campo del conjunto de datos base, mezcla de cadena y campo y una referencia más importante a otra tabla de mapeo usando la función Applymap anidada..
    • ApplyMap (‘Bonus’, EmpCode, 0): Cantidad de bonificación de mapas de la tabla de cartografía (bonificación). Si Empcode no existe en la tabla de mapeo, devuelve 0 (cero).
    • ApplyMap (‘Designation_desc’, DesignationCode, ‘Desconocido’): Descripción de la designación del mapa de la tabla de mapeo (Designation_desc). Si DesignatonCode no existe en la tabla de mapeo, devuelve «Desconocido».
    • ApplyMap (‘Bonus’, EmpCode, Salario * 0.05): Cantidad de bonificación de mapa de la tabla de cartografía (bonificación). Si Empcode no existe en la tabla de mapeo, devuelve el 5% del salario (el campo existe en el conjunto de datos del empleado).
    • ApplyMap (‘Designation_desc’, DesignationCode, ApplyMap (‘Bonus’, EmpCode, Salario * 0.05)): Descripción de la designación del mapa de la tabla de mapeo (Designation_desc). Si DesignatonCode no existe en la tabla de mapeo, devuelve Bonus from Mapping Table (Bonus). Aquí hemos utilizado Applymap anidado.

second-3640868

third-6072580

  • Cuando la tabla de mapeo tiene filas duplicadas, JOIN dará lugar a un recuento doble, mientras que ApplyMap se ocupa de la primera instancia de la clave en la tabla de mapeo. Ignora automáticamente los valores duplicados posteriores. Nuevamente, esto es similar a cómo funciona VLOOKUP () en Excel.

Pensamientos concluyentes:

Si requerimos múltiples campos de la tabla de referencia basados ​​en un campo clave, no podemos hacerlo a través de Applymap. Solo podemos tener dos columnas en una tabla de mapeo. Si estamos obligados a mapear 4 o 5 campos, entonces preferiría crear 4 o 5 tablas de mapeo. Sin embargo, si necesitamos unirnos más que eso, buscaré otras opciones como Unirme.

Este es un ejemplo en el que podemos mejorar nuestros modelos de datos y mejorar el rendimiento de los paneles de control de calidad. ¿Tiene alguna experiencia o estudios de caso que ilustren lo mismo en Qlikview? ¿Tiene algún otro consejo que compartir para mejorar los cuadros de mando?

Comparta sus pensamientos a través de los comentarios a continuación.

Si le gusta lo que acaba de leer y desea continuar con su aprendizaje sobre análisis, suscríbete a nuestros correos electrónicos, Síguenos en Twitter o como nuestro pagina de Facebook.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.