Últimamente estamos haciendo foco en mejorar el rendimiento de los módulos de Qlikview, ya que alguno de ellos con más 180 millones de registros está bloqueando el servidor de forma intermitente (una máquina con 128 GB de RAM y 8 cores). Hace unas semanas publicamos recomendaciones y buenas prácticas tanto en la configuración del servidor como en el desarrollo de los informes en Qlikview. En esta ocasión, os proponemos tres herramientas gratuitas y distribuidas por Qlikview o su comunidad para analizar qué módulos son los que debemos optimizar y concretamente en qué puntos actuar.
Descargar herramientas optimización Qlikview | |
---|---|
Qlikview Governance | |
Qlikview Optimizer | |
Qlikview Document Analyzer |
Qlikview Governance [descargar]
Herramienta oficial que se nutre de los logs del servidor para analizar el consumo de los recursos de la máquina, licencias y estadísticas de módulos. La primera vez que se ejecuta el Governance es necesario configurar la ruta donde se ubican los módulos y los correspondientes logs (recordad que es necesario que en Document Settings tengamos habilitado generar logs de cada módulo). Con este módulo principalmente podemos explotar la información relacionada con:
- Uso de RAM y memoria virtual del servidor. Permite analizar los responsables (módulos y usuarios) de dicho consumo, así como ubicar temporalmente los picos y horas valle.
- Licencias, usuarios concurrentes y sesiones de usuario. Especialmente indicado en la gestión de una cartera de licencias limitada.
- Nivel de complejidad de módulos, en esta pantalla se analizar un ranking de los módulos más complejos en relación al nº de registros, peso, usuarios que acceden (sesiones), cantidad de objetos, expresiones, cíclicos, etc.
Es una herramienta fundamental e imprescindible en el día a día. Nosotros la recargamos diariamente como tarea del Publisher.
Qlik Optimizer [descargar]
Este módulo nos va a ofrecer de un vistazo qué elementos de un informe o módulo Qlikview son los que más memoria RAM consumen. Nos permite seleccionar el tipo o subtipo de elemento a analizar y además, se pueden hacer comparaciones entre varios módulos. Para poder trabajar con esta herramienta es necesario generar un fichero .mem de los módulos que vamos a analizar. Para ello, abrimos cada módulo, pulsamos en Settings > Document Properties > General y hacemos clic en el botón Memory Statistics…. Aparecerá una ventana modal para seleccionar la ubicación donde depositar el fichero .mem. Al arrancar por primera vez Qlik Optimizer seleccionaremos esta ubicación y recargamos datos.
Algunas consultas que podemos analizar con esta herramienta:
- Descubrir la tabla del modelo de datos más pesada haciendo drill down sobre el gráfico de tarta seleccionando database > table > records.
- Buscar los objetos que más tiempo de cálculo necesitan. Para ello nos centramos en la tarta de la derecha.
- Analizar granularidad de los datos (nº de valores distintos de un mismo campo). Utilizando el filtro de subtype filtramos por «Symbols» para identificar estos campos. Normalmente son claves, métricas (indicadores) o fechas. En este último caso podemos encontrar campos datetime de los que sólo nos interesa la fecha, no la hora, por lo que podríamos reducir su granularidad convirtiéndolos a formato date.
Qlikview Document Analizer [descargar]
Al abrir la herramienta debemos configurar qué módulo vamos a analizar. Especificamos la ruta donde se encuentre y pulsamos el botón EXTRACT METADATA. Una vez generada, aparecerá un popup y podremos pulsar en el botón RELOAD. Con esta herramienta podremos:
- Identificar los campos que se cargan en el modelo y no se utilizan. Podremos generar una sentencia DROP FIELD con todos ellos para añadir al final del script. Hay que revisar bien estos campos, porque suele haber falsos positivos (por ejemplo, si algún campo se utiliza en una expresión personalizada, a veces se detecta como no utilizada).
- Analizar las expresiones que utilizan Count() (recordad que es recomendable evitar los count distinct, en su lugar, lo ideal es utilizar un flag con 1 y 0); otras que utilicen IF anidados y ver su complejidad (intentar reducirlos al máximo posible); uso de SET Analysis, etc.
- Recomendaciones para optimizar el módulo: normalmente son para configurar como autonumber las claves que usamos para romper tablas sintéticas o convertir a formato numérico las dimensiones cuyos valores son números.