Cargando datos externos a Qlikview

ACLARACION: Esta es una revisión independiente de producto, que no ha sido solicitada por ninguna compañía u organización, ni tiene el objetivo de promocionarla. El autor de esta revisión no ofrece ninguna garantía ni soporte técnico sobre la precisión o certeza de cómo operen los algoritmos, códigos o técnicas proporcionados en esta guía. O de la calidad, confiabilidad, o eficacia de los productos proporcionados a través de enlaces a sitios web externos. Ello dependerá de la configuración de su equipo y de los programas o software instalados en el mismo. Para más detalles consulte los requerimientos y documentación técnica asociada a cada producto. Si Ud. es un proveedor de software y quiere que revisemos total o parcialmente su producto, por favor, contactenos.


Uno de los productos de Business Intelligence, que ha tenido uno de los mayores crecimiento mundiales en su uso, y que nos ha dado positivos resultados para análisis y construcción de cuadros de mando integrales es Qlikview . Su simplicidad otorga potencia al análisis y elimina la complejidad de las herramientas BI tradicionales, además de posibilitar que cada usuario fragmente todos los datos sin limitaciones.

En esta revisión, veremos el primer paso para iniciar un proyecto en Qlikview, que lógicamente consiste en la carga de los datos necesarios para nuestro análisis. Primero, necesitamos descargar la herramienta, que ofrece, previa registración, una vesión gratuita para descagar desde su sitio web.

Ejemplo de Cuadro de Mando para Call Center con Qlikview

Ejemplo de Cuadro de Mando para Call Center con Qlikview

Luego de instalar el software, lo iniciamos y vamos a Archivo >> Nuevo,  para crear un nuevo proyecto.

Posteriormente, vamos a Archivo >> Editor de Script (o con la tecla abreviada CTRL+E) para generar el codigo que nos permitira cargar nuestros datos. Aqui veremos la potencialidad de Qlikview para cargar datos fragmentados, desde distintas fuentes, y realizar operaciones con los datos en el mismo momento de la carga.

Al momento de abrir la ventana del Editor de Script, aparecerá el siguiente código en la sección Main como muestra la figura.

Editor de Script de Qlikview

Editor de Script de Qlikview

Las líneas de código le indican a Qlikview cómo tiene que cargar los datos con sus formatos respectivos:

SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='$ #.##0,00;-$ #.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD-MM-YYYY';
SET TimestampFormat='DD-MM-YYYY hh:mm:ss[.fff]';
SET MonthNames='Ene;Feb;Mar;Abr;May;Jun;Jul;Ago;Sep;Oct;Nov;Dic';
SET DayNames='Lun;Mar;Mié;Jue;Vie;Sáb;Dom';

Para cargar los datos incorporaremos las siguientes líneas de código en el editor. Supongamos primero que queremos cargar datos de un archivo de texto llamado DATOS.TXT, que tiene 3 columnas: campo1, campo2 y campo3. Veamos el código Qlikview que hace ésto:

SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='$ #.##0,00;-$ #.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD-MM-YYYY';
SET TimestampFormat='DD-MM-YYYY hh:mm:ss[.fff]';
SET MonthNames='Ene;Feb;Mar;Abr;May;Jun;Jul;Ago;Sep;Oct;Nov;Dic';
SET DayNames='Lun;Mar;Mié;Jue;Vie;Sáb;Dom';

LOAD campo1
	 campo2,
	 campo3
FROM
[C:\DATOS.TXT]
(txt, codepage is 1252, embedded labels, delimiter is '\t', no quotes);

Grabamos y luego vamos a Archivo >> Ejecutar Script (o con la tecla abreviada CTRL+R) y voilá!

Si queremos agregar otra fuente de datos, como por ejemplo, cargar datos desde una tabla en Microsoft SQL Server, podemos crear automáticamente el script de conexión a la base de datos yendo a Archivo >> Ejecutar Script y abajo en la opción Datos, seleccionar la base de datos (OLE DB u ODBC, según sea) y presionar el botón Conectar, se abrirá el siguiente diálogo donde ingresaremos los datos de conexión:

Ventana de diálogo para conectar a datos

Ventana de diálogo para conectar a datos

Luego, mediante el botón Select, ingresamos el comando sql que nos permitirá seleccionar los campos de nuestra base de datos. El código completo quedará como sigue:

SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='$ #.##0,00;-$ #.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD-MM-YYYY';
SET TimestampFormat='DD-MM-YYYY hh:mm:ss[.fff]';
SET MonthNames='Ene;Feb;Mar;Abr;May;Jun;Jul;Ago;Sep;Oct;Nov;Dic';
SET DayNames='Lun;Mar;Mié;Jue;Vie;Sáb;Dom';

CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=usuario;
Initial Catalog=basededatos;Data Source=servidor;
Use Procedure for Prepare=1; Auto Translate=True;Packet Size=4096;
Use Encryption for Data=False;
Tag with column collation when possible=False] (XPassword is xYz);

LOAD
col1,
col2,
col3;
SELECT col1, col2, col3
FROM
su_tabla;

LOAD campo1
	 campo2,
	 campo3
FROM
[C:\DATOS.TXT]
(txt, codepage is 1252, embedded labels, delimiter is '\t', no quotes);

Si adicionalmente queremos hacer operaciones durante la carga de datos para crear nuevos campos podemos hacerlo usando el comando AS para designar la etiqueta del campo calculado. En el siguiente ejemplo, crearemos una columna adicional col4 que es una operación resultante de las anteriores:

SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='$ #.##0,00;-$ #.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD-MM-YYYY';
SET TimestampFormat='DD-MM-YYYY hh:mm:ss[.fff]';
SET MonthNames='Ene;Feb;Mar;Abr;May;Jun;Jul;Ago;Sep;Oct;Nov;Dic';
SET DayNames='Lun;Mar;Mié;Jue;Vie;Sáb;Dom';

CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=usuario;
Initial Catalog=basededatos;Data Source=servidor;
Use Procedure for Prepare=1; Auto Translate=True;Packet Size=4096;
Use Encryption for Data=False;
Tag with column collation when possible=False] (XPassword is xYz);

LOAD
col1,
col2,
col3,
col1*col2+col3 as col4, ;
SELECT col1, col2, col3, col4
FROM
su_tabla;

LOAD campo1
	 campo2,
	 campo3
FROM
[C:\DATOS.TXT]
(txt, codepage is 1252, embedded labels, delimiter is '\t', no quotes);

Simple no?. Esto demuestra la potencialidad de Qlikview para cargar datos fragmentados desde distintas fuentes muy fácilmente. Lo que nos ahorrará largas horas de codificación para la extracción de datos.

En próximos artículos seguiremos entregando más tips y funcionalidades  de ésta y otras herramientas. Ojalá esta revisión haya sido de utilidad. Desde ya quedan invitados a postear más abajo. Sus comentarios nos motivarán a seguir escribiendo más artículos. Reciban un cordial saludo y nos leemos en el próximo artículo!.

 

Comments ( 11 )

  1. / Bruno
    Hola, un post muy informativo en vdd, sirve para darte una muy buena idea de la gran funcionalidad de este software. Yo tengo una pregunta, las sentencias de carga son muy parecidas a las de sql, incluso las de operaciones entre campos segun veo en tu post, pero es posible realizar operaciones entre campos de distintas tablas? gracias
    • / WebMining Consultores
      Gracias por todos tus comentarios. Respecto a tu preguntas: (1) Usamos QV v9 (2) Sí es posible hacerlo: Lo puedes hacer cargando las dos tablas distintas y luego cuando ya las tienes en QV realizas las operaciones. O, las puedes cargar directo a una tabla de QV con un SQL en forma de JOIN que consulte varias tablas. Esperamos sea de utilidad. Saludos! WebMining Consultores Limitada
  2. / fsotomayor
    Hola. Gracias por mostrar este ejemplo. Respecto al mismo, tengo una duda. Cuando se habla de cargar los datos, provengan estos de un archivo o tabla, dónde es que son cargados? -Se debe definir una tabla específica o QV utiliza una tabla temporal, a la cual se puede acceder después para realizar alguna operación o carga final a una tabla definida por uno? Gracias. Saludos.
    • / WebMining Consultores
      Hola. Físicamente son cargados en tablas de qlikview, en un archivo .qvw, que luego es volcado a la memoria RAM, para estar disponible al momento de la primera consulta. Saludos! WebMining Consultores Limitada
  3. / miwesly
    Estoy probando esta aplicación y francamente me está decepcionando un poco. Había leído que era muy sencilla de usar y muy orientada al usuario final. ¿Cargar datos de las bases de datos usando sql tecleado a pedal? ¿No existe un catálogo de datos para facilitar al usuario final la creación de consultas? ¿No hay un asistente para construir las querys? No me parece una aplicación que pueda utilizar un usuario final. Bueno, sólo para consultar informes y cuadros hechos por IT, pero eso, como diría eric cartman... "es la misma mierda con distinto olor"
    • / WebMining Consultores
      Estimado: Pensamos que no ha mirado la aplicación con detención. Si crea un documento y luego va al 'Editor de Script' (CRTL+E) encontrará todo lo necesario para hacer querys, conectarse a una base de datos, cargar datos, realizar reportes y cuadros de mando. Si es un usuario final y no tiene idea como usar la aplicación, un buen punto de partida es la Ayuda. Si aún así sigue frustrado, puede hacer sus descargos a www.qlikview.com, o utilizar otra herramienta. Hay montones que prometen la maravilla que anda buscando. Saludos!
  4. / miwesly
    Sí había visto el editor de scripts, y manejo bastante bien sql, pero esperaba una forma más visual de incorporar las fuentes de datos. No obstante, ya he visto que el propio programa relaciona las tablas el solo, y que luego se pueden retocar estos enlaces. También he hecho algunos cuadros. Tras una primera mala impresión con la forma de acceder a la base de datos, tengo que decir que la impresión general es bastante buena. Es muy rápido y los ficheros que genera son muy pequeños. Voy a seguir aprendiendo a usarlo, quizás sí es cierto que es tan bueno como dicen :-) En cualquier caso, y con la cautela debida a mi desconocimiento de la aplicación, sería un gran avance de cara al usuario final poder disponer de una capa semántica entre las tablas y el programa.
  5. / JGCH
    Mi estimado,  Como usted dice la potencia de QV en este tipo de tareas, contrasta con la real facilidad de uso que venden y la pregunta es que tan cierto es eso de que está enfocado al usuario final. Mi experiencia personal es que un usuario de negocio sin background de TI (no familiarizado con scripts de ningun tipo), no se siente cómodo con esta herramienta y termina siendo "consumidor" de aplicaciones, reportes y cuadros de mando desarrollados por otros usuarios (No necesariamente TI pero sí con conocimientos más avanzados). Existen otras alternativas de visualización, por ejemplo, el informe de gatner (edición 2012), destaca a Tableau Software como la mejor evaluada por los usuarios finales en facilidad de uso  (http://anibalgoicochea.com/2012/02/10/magic-quadrant-for-business-intelligence-platforms-2012/) Saque usted sus propias conclusiones.  
    • / WebMining Consultores
      Estimado JGCH: Conocemos el reporte de Gartner, de hecho lo revisamos en febrero de este año http://www.webmining.cl/2012/02/cuadrante-magico-para-plataformas-de-business-intelligence/ y también el año pasado. Respecto a lo que señala, a Tableau lo evaluamos la primera vez que apareció en el cuadrante de Gartner (2010) y estamos de acuerdo en que puede ser una alternativa a Qlikview. De hecho, en el cuadrante es mejor valorado que QV en "Ability to Execute", por lo que, para algunos usuarios de negocios, no familiarizados con scripting y construcción de dashboards, podria tener mayor facilidad de uso que la alternativa señalada anteriormente. Próximamente mostraremos algunas bondades de Tableu por si le parece que hemos cargado la balanza hacia QV. Saludos! WebMining Consultores Limitada
  6. / Fernandof
    Hola, Estamos evaluando QlikView en mi empresa y me ha surgido una duda. Nosotros trabajamos con SQL Server, y nuestro objetivo es disponer de una herramienta que pueda interrogar a la BBDD y tenga gran facilidad para presentar los resultados. Nuesta idea es montar una capa superior en SQL Server para QV que este formada vistas de forma que la información se obtenga siempre en tiempo real. Si hubiera problemas de rendimiento, utilizariamos indices partidos y otras estrategias con las que estamos muy familiarizados. Mi duda es, ¿Es posible hacer que QV acceda directamente a esta capa de la BBDD? Es decir, que tome los datos directamente del SQL Server?. Por lo que he leido, no es posible porque se nutre de ficheros propios (qvw) que se han de cargar cada vez.  Muchas gracias de antemano. Fernando
    • / WebMining Consultores
      Hola. Sí, QV se puede conectar directamente a SQL Server via ODBC u OLEDB. Lo que tu señalas que has leído se refiere a que QV tiene las tres capas integradas: ETL, Repositorio o nube de datos y la capa de visualización. Esto quiere decir que cuando cargas los datos desde SQL Server, los datos quedan en la nube de datos de QV, que son ficheros qvw o qvd, que luego se vuelcan a memoria la primera vez que se invocan. En este caso, la estrategia a usar es hacer cargar parciales o incrementarles en cada ciclo de actualización de tu SQL Server para tener la misma información en ambos lados. Esperamos sea de utilidad. Atentamente, Webmining Consultores Ltda.

Leave a reply