Valores nulos en Mapeos

Esta es mi segunda entrada de blog. En esta ocasión aprovecharé para escribir sobre la función Mapping Load y cómo maneja los valores nulos.

Problema:

Supongamos que tenemos 2 catálogos o dimensiones: Productos y Subcategoría. La dimensión productos incluye nombre de frutas, de bebidas y de algunas especias. Subcategoría sirve para clasificarlos de acuerdo al tipo de alimento al que se refieren. Partiendo de estas 2 dimensiones, supongamos un requerimiento en el cual necesito una agrupación adicional llamada categoría. Esta nueva agrupación o filtro, como su nombre lo indica será más general  que subcategoría, pero además solo incluirá 2 posibles valores: Bebidas (Drink) y comida (Food), descartando los productos que son especias.

Aquí es donde entra la función de mapeo, ya que aprovecharemos el catálogo de subcategoría para “mapear” las categorías que se van a incluir.

Solución:

1. La tabla principal incluye el campo producto y el campo subcategoría. Sobre esta tabla se hará el mapeo del nuevo campo categoría. la tabla se incluye como una tabla Inline

catálogos

2. La tabla de mapeo aprovecha la subcategoría que ya existe.  Primero se incluye como una tabla Inline y posteriormente con la sentencia resident se hace la carga de mapeo (con el prefijo Mapping) y con la sentencia Where descartamos los condimentos, ya que para el campo categoría sólo interesan comida y bebidas

Mapping Load

3.  El comportamiento intuitivo es que si en el punto anterior ya hicimos un resident para descartar los condimentos, al momento de usar la sentencia Applymap, no debería ser necesario utilizar el tercer parámetro que permite asignar un valor por default en caso de que el mapeo no encuentre coincidencias.

applymap

4. Al recargar el QVW vemos que contrario a lo que uno pudiera pensar, los valores de condimento no fueron descartados. Por lo cual el filtro que sólo debería tener los valores Drink y Food, también contiene los valores Herb y Spice, los cuales no nos sirven para este campo. Esto ocurre porque aunque se use la sentencia where para descartar valores, si no se especifica en applymap que hacer con esos valores descartados, QlikView asumirá que también deben ser parte del mapeo.

Cat

5. En este punto es cuando se vuelve importante el tercer parámetro de la función Applymap. En este caso se utiliza para indicar que en caso de no existir coincidencia (los valores Herb y Spice a pesar de existir en el catálogo de subcategoría no deben trasladarse a Categoría), ponga un valor de nulo.

Applymap 2o intento

Resultado:

Si volvemos a recargar el QVW, veremos como efectivamente, los valores descartados no son mapeados

Resultado

Incluyo el archivo para cualquier referencia, cualquier duda pueden escribir a jaime.aguilar@evolcon.com

Archivo qvw: https://www.dropbox.com/s/b23fruwvz8x1wb3/Mapping%20Load.qvw

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s