Cargar imágenes en QlikView

Como QlikView Developer es usual que se necesite cargar imágenes en nuestro aplicativo y para mantener la portabilidad, es posible que se incluya archivos externos en el mismo .qvw. Para lograr esto se usa el prefijo "Bundle", los archivos cargados son comprimidos durante la carga, pero a pesar de esto podría llegar a ocupar un espacio adicional considerable cuando la aplicación se cargue en RAM. Por lo tanto, es muy importante tener en cuenta el tamaño y número de archivos a cargar antes de usar esta funcionalidad.

Las imágenes pueden ser referenciadas desde la vista de diseño como se haría normalmente con cualquier otro campo, o desde un gráfico usando la función Info o como un archivo interno usando la sintaxis especial del tipo: qmem://Nombre_Campo/Valor_Campo o también se puede hacer usando indices de la siguiente forma: qmem://Nombre_Campo/<Indice>, donde Indice es el indice interno de un valor de campo.

Ejemplo:
Bundle Load * From FlagsCoeds.csv;

Por ejemplo, digamos que usted tiene que traer en las banderas de los países que se van a mostrar cuando se selecciona el país correspondiente en un cuadro de lista y que necesita para mostrar un icono que indica si las ventas de un país están por encima o por debajo de un umbral predefinido (para este caso definiremos como umbral 3 millones).

El proceso Bundle es un proceso muy sencillo de implementar vía scripting. La sintaxis de la carga Bundle debería tener este aspecto:

Imagenes:
Bundle Load
    [Nombre_Imagen],
    [Ubicacion_Imagen]
From Assets\RutasAssets.xlsx
(ooxml, embedded labels, table is Hoja1$);

Cada imagen que vamos a cargar debe tener dos campos:
  • El primer campo es un identificador como un número de índice, nombre de la imagen, un campo clave que asocia la imagen con otros campos, etc.
  • El segundo campo debe contener la ruta de la imagen.


Este archivo contiene la columna PaisId para que se pueda asociar las banderas con los países.


Este archivo contiene solo los nombres de los archivos porque sólo estoy usando estos iconos como una referencia y no están asociados a ningún campo.


Cuando usemos un gráfico en la pestraña Expresiones, necesitaremos definir la expresión en Opciones de Presentación como Representación: Imagen.


Lo siguiente que necesitamos para crear la expresión es indicar mediante un If que aparezca el cuadrado verde cuando las ventas sean mayores a $3M y de lo contrario que sea el círculo rojo quien se muestre. Tenga en cuenta que las imágenes se cargan en QlikView son accesibles a través de la ficha Imágenes en la parte inferior derecha del cuadro de Expresiones.


El resultado se muestra a continuación, Suecia tiene ventas inferiores a $3 millones por lo que se visualiza el círculo rojo, mientras que para el caso de Estados Unidos que tiene ventas de $5 millones, se visualiza el cuadrado verde.


Una vez que las imágenes se cargan en QlikView podremos hacer referencia a ellas mediante la función Info() y un If estándar para decidir la que corresponda.

=If(Sum(Sales) > 3000000, 'qmem://Nombre_Imagen/Cuadro_Verde', 'qmem://Nombre_Imagen/Circulo_Rojo')

Usando la función Info() se puede mostrar las banderas cuando se selecciona un país, de esta forma QlikView sabrá cual es la imagen correspondiente en base al PaisId. Si fuera necesario, podríamos hacer lo mismo con los símbolos sólo añadiendo un cuadro de lista con el campo Nombre_Imagen y seleccionar una imagen desde ahí.

Esto es lo que simula la acción del usuario cuando selecciona un país. La función Info() muestra la imagen asociada con PaisId y para las ventas que se encuentren por encima del umbral establecido se mostrará el cuadro verde.


Recordar que cuando se cargan imágenes u otro tipo de archivos (podrían ser audio, documentos, etc.) en una aplicación QlikView mediante la instrucción Bundle Load, tanto la memoria RAM usada como el tamaño de la aplicación se verán incrementados, por esto es importante considerar este punto antes de decidir usar la instrucción Bundle Load.

Comentarios