Optimización Qlikview Server

Cada vez que un módulo es abierto por primera vez el servidor carga en RAM el contenido del modelo de datos. En el momento que ese usuario hace selecciones, los cálculos y gráficos resultantes se van almacenando en la RAM del servidor, de manera que estos cálculos se pueden compartir entre todos los usuarios, agilizando futuras consultas. Mientras tanto, QlikView va almacenando el estado de la sesión actual para cada usuario.

La vida de la caché se gestiona desde el Qlikview Manager Console (QMC) configurando el working set con dos parámetros:

  • LOW: memoria RAM mínima que puede utilizar QV (no quiere decir que la reserve, es el máximo de memoria a partir del cual debe limpiar caché y purgar sesiones para liberar espacio).
  • HIGH: máximo RAM disponible para QV en caso de que sea necesario.

Optimización servidor qlikview

Cuando el consumo de RAM alcanza el valor indicado en el LOW (en nuestro caso, el 50% de la RAM disponible), se limpia la caché y se purgan sesiones. Pero si esto no es suficiente, QV puede utilizar hasta el 70% de la RAM del servidor o bien puede usar el disco como Memoria Virtual (según criterios internos de QV). Si de nuevo fuese necesaria más memoria, QV está obligado a utilizar el disco como Memoria Virtual. El rendimiento de este tipo de memoria es mucho peor que la RAM.

Una solución paliativa para optimizar el rendimiento en los picos de consumo sería subir el parámetro HIGH al 90% y NO ejecutar ninguna aplicación dentro del servidor, es decir, no abrir ni recargar módulos desde QV Desktop. Cuando finalice el valle, se recupera la configuración original.

Buenas prácticas en la configuración de Qlikview Server

  1. Incrementar recursos de hardware: ampliar memoria RAM o Cores.
  2. Limitar cantidad de sesiones concurrentes permitidas: Normalmente no se limita para evitar problemas de acceso. Si fuera necesario, se puede limitar en paralelo a asignar un timeout bajo para liberar rápidamente las sesiones en desuso.
  3. Desarrollar aplicaciones para un correcto uso de memoria: implicaría revisar scripts (tablas sintéticas, bucles, expresiones complejas, set analysis, etc) y rediseñar aplicaciones con menor número de objetos, macros, acciones y lógica en general.
  4. Reducir la cantidad de tareas programadas en el servidor: En caso de que haya tareas programadas en Qlikview Server (Publisher). Otra opción es realizar las cargas en horas de bajo consumo (madrugada).
  5. Limitar el desarrollo de aplicaciones en el servidor: desarrollar y recargar módulos en otra máquina y luego copiarlos al servidor. Lo ideal sería trabajar en un entorno de desarrollo y explotar la información desde un servidor operacional.
  6. Liberar recursos deshabilitando otras aplicaciones: en el caso de que se ejecuten otras aplicaciones en la misma máquina.

 

Buenas prácticas en diseño de modelo de datos en Qlikview

Qlikview puede analizar múltiples orígenes de datos pero la forma más eficiente es con un modelo de datos de Estrella o Copo de nieve.

Normalmente los esquemas de Estrella son la mejor solución, pero en muchas situaciones necesitaremos varias tablas de hechos. La forma correcta de conectarlas es mediante tablas de enlace para evitar claves sintéticas y loops. Se puede abordar de tres formas diferentes:

Qlikview modelo de datos

  1. CONCATENATE

Una opción es concatenar dos tablas de hechos, ya sea de forma física mediante la sentencia CONCATENATE o de forma lógica utilizando los nombres de los campos (por ejemplo, CAMPO1_A y CAMPO1_B).

En el caso de dos tablas de hechos A y B, el número de registros de la nueva tabla será la suma de los registros de ambas. Las métricas de la tabla A que no estén en B estarán a NULL y viceversa.

Los nombres de los campos deben ser exactamente los mismos (podemos renombrarlos con AS). La tabla que manda será siempre la que se cargue primero (antes del CONCATENATE).

Cuando se concatenan dos tablas, es necesario crear una referencia manual para identificar el tipo u origen de los datos, por ejemplo “Tipo”.

 

  1. ÚNICA TABLA DE HECHOS

Si es posible, otra solución es fabricar una única tabla de hechos a nivel de SQL o Script.

 

  1. TABLA DE ENLACE CENTRAL

Es la forma habitual de romper las claves sintéticas. Se crean campos de enlace entre las tablas de hecho y las maestras/lookup mediante alias de campos.

Sin Comentarios

Centroides y shapefiles de municipios de España para mapas

Actualmente estamos trabajando en un proyecto de QlikSense utilizando la extensión QlikMaps para representar en capas de un mapa indicadores sobre áreas geográficas. Para visualizar la información es necesario tener correctamente parametrizadas las coordenadas y contornos de todas las áreas geográficas que se vayan a utilizar. Los centroides y contornos de Comunidades autónomas y provincias se pueden encontrar de forma relativamente sencilla, pero para las poblaciones o municipios no hay absolutamente nada.

Shapefiles municipios españa

Desde el portal GADM podemos descargar una base de datos shapefile con las coordenadas de los contornos de todos los municipios de España, con el inconveniente de que es una BD antigua. Hasta donde hemos podido confirmar, es anterior al 2008, ya que hay pueblos que han cambiado de nombre o se han segregado de otros más grandes y aparecen unidos aun.

Para cargar los datos en QlikSense importamos los ficheros .shp a QGIS y generamos un .kml. Sin embargo, comprobamos que al cargar las áreas delimitadas por pares de coordenadas QlikSense no es capaz de correr con agilidad. Como solución, la extensión de mapas además de pintar un polígono por coordenadas, puede utilizar un código polyline. Para convertir las coordenadas a polylines utilizamos una librería gratuita de PHP, convertimos el KML a un XML más sencillo y generamos los códigos comprimidos. Podéis descargar el conversor en PHP desde aquí (nosotros los lanzamos en local utilizando un WAMP). Para validar que los polylines son correctos podéis utilizar esta herramienta de Google Utilidad codificadora de polilínea interactiva. Simplemente copiáis el código y la decodificáis. En caso de que una región tenga varios polígonos (por ejemplo la parte de Burgos dentro de Álava), para que QlikMaps lo pinte correctamente juntaremos los dos polylines con un “<br>” en medio (importante que vaya en minúsculas).

Como la BD de GADM no está actualizada, de los 8125 municipios de España no hemos conseguido los polígonos de 17 de ellos (un 99,76%). Los códigos de provincia y municipio están cruzados con las tablas del INE. Podéis descargar los ficheros con centroides y shapelines de España desde aquí:

Descargar Centroides y shapefiles de España
Comunidades autónomas <1MB
Provincias <1MB
Municipios (99,76% completo) 2MB
Códigos postales 2.4MB
Últ. actualización Nov-2017

Por ejemplo, el polígono que define el área de Alcorcón (Madrid) es el siguiente chorro de pares coordenadas:

-3.80271911621095,40.3633918762208,0 -3.80690407752991,40.3666038513184,0 -3.81053400039672,40.3639030456543,0 -3.81314897537232,40.3697967529298,0 -3.83468604087824,40.3961296081543,0 -3.83030104637146,40.4016304016113,0 -3.83774304389953,40.4031066894531,0 -3.8458130359649,40.3907318115234,0 -3.86770701408381,40.3780097961426,0 -3.8665120601654,40.3739585876466,0 -3.87787795066835,40.3730964660645,0 -3.87884902954102,40.3697280883789,0 -3.87064909934998,40.358684539795,0 -3.87086296081542,40.3532257080079,0 -3.86765193939208,40.3535194396974,0 -3.86675405502319,40.3468856811524,0 -3.85911393165589,40.3434371948243,0 -3.85418391227712,40.3305435180665,0 -3.84749698638917,40.3258628845216,0 -3.84681797027589,40.3241500854492,0 -3.8385949134826,40.3245315551758,0 -3.817715883255,40.3276824951173,0 -3.81699991226197,40.3307342529298,0 -3.79979109764098,40.3427543640137,0 -3.8047161102295,40.3530426025392,0 -3.79892897605896,40.3566513061524,0 -3.78781390190125,40.3587532043457,0 -3.80271911621095,40.3633918762208,0

Que podemos reemplazar por una elegante línea polyline:

enjuF~ueVaSbYzOtUyc@hOqcDreCka@kZgHnm@hlAlq@nnAxgChXmFjD`
fA`T`E~cAgr@ba@h@y@aSlh@sDpTwn@poAy]f\yh@tIgCkAkr@uRoaCaR
oCcjAqjBi_Ax]qUec@cLodA_\d|A

En el mapa quedaría de la siguiente forma:

Centroides y shapelines de municipios de España para mapas

1 Comentario

Qlikview QlikBot, llegan los chat bots al universo BI

En la compañía para la que trabajo utilizamos varias herramientas BI (Business Intelligence) o de reporting para distribuir y explotar la información en la organización. Una de ellas es Qlikview, del fabricante sueco Qlik. En el último cuadrante mágico de Gartner 2017 observamos como es una de las tres empresas líderes en el sector por detrás de Microsoft con su PowerBI y Tableau.

Gartner BI 2017

La propia empresa describe Qlikview como una plataforma de Business Discovery enfocada fundamentalmente al autoservicio para todo tipo de usuario (sin considerar su nivel técnico). Qlikview permite formular y responder nuestras propias preguntas jugando con los datos, dimensiones e indicadores. Cabe mencionar que esta descripción es la tendencia actual de las herramientas BI, alejadas de la metodología tradicional de generar informes precocinados y rígidos. Qlikview ha apostado en esta línea con Qlik Sense, un producto enfocado directamente al autoservicio. La competencia tiene su propia versión, como MicroStrategy Visual Insight. Al ser la tendencia actual, todas las tecnologías y proyectos que están surgiendo van enfocados a hacer uso de este tipo de plataformas. El objetivo es que los usuarios finales, normalmente de “negocio”, cocinen por sí mismos los datos, por lo que estas nuevas plataformas son muy intuitivas y sencillas de usar.

Con Qlik Sense o MicroStrategy Visual Insight cualquier usuario puede cargar sus propios datos y construir modelos e informes sin tener conocimientos técnicos. Generar dimensiones o métricas es tan sencillo como cargar un Excel o conectarnos a cualquier repositorio de datos (MS Access, SQL Server, Oracle, MySQL, fichero de texto plano…). En su afán por facilitar el acceso a la información, recientemente Qlikview ha apadrinado un proyecto (aun no es producto) ideado por uno de sus ingenieros: un Chat Bot.

Los Chat Bots están poniéndose de moda, especialmente como “asistentes virtuales” en entornos online. Por ejemplo, en tiendas ecommerces podemos encontrar un pequeño chat para consultas donde un Chat Bot actuaría como asistente de primer nivel para intentar resolver dudas de los usuarios. Es una tecnología que llevamos años utilizando en los call centers.

En la pasada convención anual de Qlik en Orlando se presentó el proyecto QlikBot por su creador (por cierto, es español). Insisten en que NO es un producto y como tal no se vende, es un concepto que utiliza varias APIs de lenguaje natural, narrativa, herramientas de mensajería  y Qlik Sense para reducir al mínimo el esfuerzo de explotación de la información. Lo que permite es un paso de gigante para ofrecer datos a usuarios finales. A través de una herramienta de mensajería instantánea como Telegram, Line, Skype, etc. enviaríamos mensajes de voz solicitando información, la lógica interna traduciría estos mensajes a comandos interpretables por Qlik Sense, que devolvería indicadores, gráficos o incluso acceso a informes precocinados. El alcance es infinito, el creador utiliza por ejemplo generadores de alertas o conexión a repositorios de noticias. Os dejo un video para que veáis un caso práctico:

Actualmente en la compañía para la que trabajo estamos inmersos en un prototipo de este concepto, donde lo más complicado sería crear o implementar el pegamento que une todas las APIs. Os puedo adelantar que muchas de éstas tienen licencias gratuitas, como Google API.AI para reconocimiento de lenguaje natural (importante, tiene un buen repositorio de español peninsular), Yseop Savvy como motor de narrativa (para generar los mensajes que enviaría el bot) o el API de Telegram para crear chat bots.

Sin Comentarios

¿Qué son Alojamiento y dominio web?

En varias ocasiones hemos publicado en este blog recomendaciones, consejos y trucos para diseñar una página web. Por fortuna, tanto si el proyecto que queremos abordar es personal (un blog o una fotogalería, por ejemplo), como si es una tienda online, no son necesarios conocimientos técnicos para abordarlos, ya que tenemos a nuestra disposición multitud de recursos online para agilizar el proceso de diseño, optimización y despliegue en un servidor. Para usuarios sin experiencia previa en  crear una pagina web lo más accesible por sencillez y velocidad es utilizar paquetes prefabricados gratuitos (CMS como WordPress) o utilizar servicios online de diseño web profesional a través de plantillas o cartuchos. Sin embargo, si lo que buscamos es crear nuestra propia página web codificando HTML o instalando algún CMS (el mismo WordPress o Prestashop, Drupal…),  necesitamos contratar un servicio de alojamiento web y un dominio.

Alojamiento web

De forma abreviada, podríamos definir un sitio web como un conjunto de ficheros (.htm, hojas de estilo, ficheros javascript, imágenes, documentos descargables, etc) ubicados físicamente en el disco duro de un ordenador. Cuando trabajamos de forma local almacenamos todos estos ficheros en nuestra máquina, pero no es accesible desde internet a no ser que instalemos un servidor web (Apache, Tomcat, Internet Information Server, etc), configuremos el acceso desde el exterior y mantengamos nuestro ordenador encendido las 24 horas del día, disponiendo además del suficiente ancho de banda para que los usuarios no experimenten problemas de conexión. Por suerte, no es necesario condenar a nuestro ordenador a estar enchufado de por vida. En el mercado existen cientos de empresas que alquilan un trocito de disco duro en un ordenador (de ahora en adelante Servidor) que está configurado y optimizado física y virtualmente para ser accesible desde internet. Este tipo de servicio se conoce coloquialmente como Alojamiento Web. Tenemos a nuestra disposición distintos tipos de contrato, donde los más comunes son:

  • Alojamiento compartido: es el más económico, ya que un solo servidor o máquina actúa como granja de muchas páginas web o clientes. Tiene prestaciones aceptables para pequeños proyectos: espacio físico reducido, ancho de banda limitado, imposibilidad de reiniciar el servidor o instalar software. Además, otro hándicap importante es que no conoces a tus “vecinos”, que pueden perjudicar tanto el SEO como consumir el 80% del ancho de banda del servidor y dejar el otro 20% para el resto de vecinos.
  • Servidor dedicado: es la opción más cara. Alquilas un servidor exclusivamente para ti. Tiene todas las ventajas que si tuvieras la máquina en tu casa, puedes gestionar los recursos, instalar software, reiniciarla cuando lo consideres, etc.
  • Servidor Virtual Privado (VPS en sus siglas en inglés): es un punto intermedio entre las dos opciones anteriores. Físicamente sólo hay una máquina o servidor, pero virtualmente existen varios sistemas independientes instalados, por lo que te permite todas las ventajas de un servidor dedicado, pero en un entorno y recursos compartido. Por un precio intermedio es la mejor opción para proyectos importantes.

¿Qué son Alojamiento y dominio web?

Los precios varían en función del servicio a contratar, la cantidad de recursos que nos interesen y la ubicación física del Data Center (por ejemplo, los hosting de EEUU son muy baratos, pero el acceso desde España es mucho más lento que si el servidor estuviese en la península). ¿Qué hay que comprobar cuando se contrata el alojamiento web? Fundamentalmente:

  • Espacio físico: normalmente ofrecen varios paquetes con distinta capacidad, todo depende de lo que vayamos a necesitar.
  • Ancho de banda o Cantidad de transferencia: es un indicador que se utiliza para medir y limitar el número de peticiones de los usuarios a tu sitio web tanto de subida como de bajada. Por ejemplo, cada vez que un usuario accede a tu web se descarga las imágenes y contenido a su navegador.
  • Soporte PHP y MySQL: depende de si utilizas este software en tu web (base de datos, formularios, etc).

Mi recomendación es contratar siempre en compañías cuyo Data Center esté ubicado en el país al que va dirigida la página web. En España el precio medio anual suele rondar los 40 euros.

Dominio web

Los dominios nos permiten acceder de forma sencilla y fácil de memorizar a ese espacio de disco duro del servidor que hemos contratado o alquilado. En realidad, cuando escribimos en la barra de un navegador el dominio de una web, lo que ocurre por detrás es que éste se traduce a través de un servidor DNS y lo convierte en la dirección IP y el puerto de la ruta física donde se encuentra. Por ejemplo, n4gash.com sería un acceso directo a 85.238.8.136. Como memorizar todos estos números para cada web sería imposible, tenemos a nuestra disposición los dominios que nos facilitan la vida.

El proceso de contratación es muy sencillo, normalmente se suele contratar un paquete completo en el proveedor que incluye alojamiento y dominio. Es lo más cómodo porque el dominio ya estaría configurado para que apunte a nuestro alojamiento. En algunas ocasiones, por precio o comodidad, podemos tener el dominio en un proveedor y el alojamiento en otro. En este caso tendríamos que configurar las DNS del dominio para que apunten al otro proveedor.

El precio medio en España de un dominio .com ronda los 10€. Normalmente los dominios nacionales (.es, .eu) son más caros que los estándar .com, .net, .org

1 Comentario

¿Qué es una OGP?

¿Qué es una OGP?
Infografía ofrecida por Wrike – Software De Colaboración

Sin Comentarios

MicroStrategy: pasar atributo seleccionado entre Documents o Dashboards

logo_microstrategy

Aunque la navegabilidad en MicroStrategy sigue siendo tarea pendiente, podemos hacer algo de ingeniería para conseguir facilitar el acceso a la información a nuestros usuarios. Disponemos del Drill down para bucear a través de los datos (previamente habiendo configurado las jerarquías de los atributos), en algunas ocasiones nos interesará utilizar un valor de atributo para filtrar un documento nuevo. Por ejemplo, tenemos un grid con una dimensión geográfica y varios KPIs. Para mejorar la comprensión de los datos el cliente nos solicita que sea posible ver los datos en varios niveles de agregación y en detalle la evolución de los KPIs mediante varios gráficos y tablas. Para el primer requisito usaríamos el Drill down de forma que el usuario tenga una foto desagregada al nivel más alto (Región) y los siguientes subniveles (delegación, ciudad, código postal, etc). Para el segundo requisito podemos hacer dos cosas, o bien utilizar un PanelStack como Ventana de información o bien hacer esa ingeniería de la que hablábamos utilizando Prompts o Selecciones dinámicas.

logo_microstrategy

En el repositorio de ayuda de MicroStrategy podemos ver qué son y para qué se utilizan las Selecciones dinámicas. Básicamente lo que nos ofrecen es preguntar al usuario qué quiere ver en un Document en base a los atributos y métricas contenidas en el mismo. Los tipos de Selecciones dinámicas son:

  • Selección dinámica de Definición de Filtro: es una forma de ejecutar un Filtro sobre una jerarquía, seleccionar una métrica, un atributo o elementos de una lista de valores de atributo.
  • Selección dinámica de Objeto: con este prompt podemos seleccionar los objetos (atributos y métricas) que se van a mostrar en el Document
  • Selección dinámica de Expresión o Valor de atributo: el usuario puede introducir una expresión (cadena de texto, fecha o número) para filtrar un atributo o métrica concretos

¿Cómo se puede filtrar un Document con un atributo seleccionado desde otro Document?: Prompts o Selecciones dinámicas

Lo primero que vamos a necesitar son dos Reports independientes. Uno para el Document padre y otro para el hijo que mostrará los datos filtrados. Ambos Reports deben compartir un atributo a través del cual estarán conectados. El resto de atributos y métricas no tienen por qué compartirse. En el Report que servirá como fuente del Document hijo tendremos que añadir una Selección dinámica de tipo Definición de Filtro: lista de elementos de atributo.

Microstrategy: pasar atributo seleccionado de un Document a otro

Crearemos un prompt o selección dinámica con el atributo que vamos a usar de conector. A través del wizard seleccionamos el atributo en cuestión, indicamos los elementos de atributo que estarán disponibles (por defecto se seleccionan todos, pero podemos utilizar un filtro para coger sólo unos pocos o bien seleccionarlos a mano). Podemos configurar el comportamiento en la versión web (básicamente cómo se mostrará la pantalla de selección de elementos de atributo), si permitimos las Respuestas personales que tengan preconfiguradas los usuarios y varios límites de selección. Finalmente podemos añadir si lo consideramos algunas respuestas preseleccionadas. Una vez creada la Selección dinámica la añadimos como Filtro de visualización al Report hijo (incluso si está generado desde un cubo).

Microstrategy: pasar atributo seleccionado de un Document a otro

Ahora crearemos dos Documents o Dashboards. Asignaremos como origen de datos a cada uno los Reports que acabamos de crear según el rol de cada Document (padre e hijo) y creamos una tabla en el padre con el atributo que usaremos de conector (y si lo deseamos, otros atributos o métricas), mientras que en el hijo crearemos varios gráficos y tablas que tengan el mismo atributo. Si utilizáis el Desktop para crear los Documents al guardar os pedirá que confirméis si os debe volver a preguntar por el Prompt o si deseáis que guarde la selección como respuesta por defecto. Os recomiendo que lo guardéis para que os pregunte siempre al abrirlo.

img SRC=”https://www.n4gash.com/wp-content/2016/06/prompts_microstrategy3.png” ALT=”Microstrategy: pasar atributo seleccionado de un Document a otro” TITLE=”Microstrategy: pasar atributo seleccionado de un Document a otro”/>

Para conectar ambos documentos nos vamos a MicroStrategy Web Administrator y abrimos el Document padre. Seleccionamos la vista Diseño o Modo editable. Hacemos clic derecho sobre la cabecera de la tabla, en concreto en la del atributo que usaremos como filtro y pulsamos sobre Editar vínculos….

Microstrategy: pasar atributo seleccionado de un Document a otro

En el nuevo hipervínculo debemos seleccionar el Document hijo que acabamos de crear (pulsamos sobre el botón […] para seleccionar el destino del link). Automáticamente reconoce que tiene una Selección dinámica y la muestra en el listado (en caso de que hubiera varias, las mostraría todas). Por cada Selección dinámica podemos personalizar el comportamiento que tendrá. En nuestro caso queremos que automáticamente al hacer clic en el elemento de atributo del Document padre nos abra un nuevo informe de gráficos con los datos del elemento seleccionado (sin que le solicite al usuario), por lo que debemos configurarlo como Responder dinámicamente. La opción de los Pasar todos los valores de selector la explicaré más adelante, es otra forma de pasar selecciones de un Document a otro, pero en este caso de los valores seleccionados de los Selectores. Pulsamos aceptar y veremos que se subrayan los valores de atributo (no os preocupéis, sólo es en el Modo editable).

Microstrategy: pasar atributo seleccionado de un Document a otro

Si accedemos desde un dispositivo móvil o vía web, observaremos que tendremos un informe con varias métricas y que pulsando sobre el valor del atributo accedemos a un nuevo informe con varios gráficos con datos del atributo seleccionado.

Sin Comentarios