Curso Qlikview

15
CURSO QLIKVIEW Qlikview puede acceder a la web, redes sociales, aplicaciones o dispositivos móviles. QV tiene dos herramientas: Publisher: Divide el fichero para cargarlo mejor y genera pdfs. Server: No divide el fichero. Metodología: 1. Análisis de requisitos. Consultoría: 2. Análisis de fuentes de datos. 3. Elaboración del modelo de datos Desarrollo: 4. Contrucción del layout 5. Pruebas del sistema 6. Optimización + Perfiles de seguridad Formación: 7. Pruebas usuario 8. Aceptación del sistema. Qlikview depende totalmente de las características del sistema. El fichero del Cuadro de Mando suele ocupar unos 200 MB y de un 10 a un 15% más por usuario. ESTRUCTURA DE FICHEROS Proyecto Datos_JPG (Carpeta donde van imágenes) Datos_XLS (Carpeta donde va el resto de ficheros fuente) Datos_QVD (Carpeta donde van los ficheros QVD generados por QV) Fichero_CM.qvw (este es el fichero que ve el usuario) En Datos_QVD vamos a tener un fichero de carga .qvw (carga.qvw) que nos va a permitir generar los ficheros .qvd que van a alimentar el cuadro de mando.

Transcript of Curso Qlikview

Page 1: Curso Qlikview

CURSO QLIKVIEW

Qlikview puede acceder a la web, redes sociales, aplicaciones o dispositivos móviles.

QV tiene dos herramientas: Publisher: Divide el fichero para cargarlo mejor y genera pdfs. Server: No divide el fichero.

Metodología:

1. Análisis de requisitos.Consultoría:2. Análisis de fuentes de datos.3. Elaboración del modelo de datosDesarrollo:4. Contrucción del layout5. Pruebas del sistema6. Optimización + Perfiles de seguridadFormación:7. Pruebas usuario8. Aceptación del sistema.

Qlikview depende totalmente de las características del sistema. El fichero del Cuadro de Mando suele ocupar unos 200 MB y de un 10 a un 15% más por usuario.

ESTRUCTURA DE FICHEROS

Proyecto Datos_JPG (Carpeta donde van imágenes) Datos_XLS (Carpeta donde va el resto de ficheros fuente) Datos_QVD (Carpeta donde van los ficheros QVD generados por QV) Fichero_CM.qvw (este es el fichero que ve el usuario)

En Datos_QVD vamos a tener un fichero de carga .qvw (carga.qvw) que nos va a permitir generar los ficheros .qvd que van a alimentar el cuadro de mando.

Qlikview no accede directamente a la base de datos, tiene su propio repositorio en los ficheros .qvd.

El fichero de carga, a través de scripts, se conecta a las fuentes de datos y almacena la información en ficheros qvd, comprimiendo la información y facilitando el acceso a la misma.

Cada fichero qvd puede ser una tabla de hechos o una tabla de lookup.

En el fichero del cuadro de mando veremos nuestro modelo en estrella o copo de nueve.

Page 2: Curso Qlikview

Nada más acceder a QV, tenemos dos partes: la de layout que muestra el cuadro de mando; y el editor de script, que contiene la parte de desarrollo.

En el editor de script, la pestaña principal siempre fija unos parámetros de fechas, formatos, etc. Estos parámetros o variables se fijan con SET o LET. Bajo estos parámetros podemos añadir más o meter permisos de usuarios.

Añadimos una nueva pestaña: Creamos una conexión ODBC en Windows.

o Panel de Control > Herramientas Administrativas > Orígenes de dato OBDC > DNS de Sistema > Microsoft Access Driver (.accdb, .mdb) (en opciones avanzadas podemos poner las claves de acceso si está protegido por contraseña).

Pinchamos en Editor de Script en QV.o Pestaña Datos > ODBC > Conectar a BBDD.o Select > Crear sentencia select.

Quitamos tablas del sistema. No es bueno traerse todos los campos con *. Seleccionamos los campos que queremos y hacemos clic en

añadir, añadiendo un LOAD antes (LOAD Precedente). Seleccionamos todo lo que queremos y Aceptamos.

o Aceptar > Guardar > Datos_QVD como carga.qvw.o Hacemos la carga dándole al botón Recargar.

TIP 1. Verificar las tablas siempre que se hace una carga. Configuraciones > Propiedades de Documento > Tablas También se puede hacer con el visor de tablas en el Editor de Script. CUIDADO! Qlikview siempre relaciona por el nombre del campo y es

sensible a mayúsculas. Si hay más de un campo común entre dos tablas, aparecen las tablas ssyn, que hay que eliminar. Estas tablas ssyn son claves compuestas y se pueden eliminar de dos formas:

o Renombrando los campos para que no crucen y dando etiquetas a las tablas antes de cargarlas (Esto último se hace poniendo el nombre de la tabla Tabla: justo antes del LOAD)

o Creando un campo concatenado con los campos por los que tienen que cruzar las dos tablas y cruzando por estos.

TIP 2. GUARDAR siempre antes de recargar.

Es muy importante el LOAD porque allí se pueden hacer las transformaciones que queramos (operaciones, renombre de campos…)

Renombrar campos: Old_name as New_nameComentarios:

// … rem ... ; /* … */

Page 3: Curso Qlikview

Todos los cruces y las relaciones entre tablas se hacen después de tener todas importadas.

Para tener todo organizado, creamos una nueva pestaña cada vez que cambiemos de fuente de datos. Es importante marcar la opción de Rutas Relativas para que inserte las rutas relativas al fichero y no las de la máquina local. Esto puede suponer un problema al subirlo al servidor o cambiar de máquina. Se activa la opción de rutas relativas insertando Directory; en la primera pestaña del Editor de Script.

Para cargar ficheros planos existe una opción (Habilitar Paso de Transformación) en la que podemos eliminar registros bajo una condición, eliminar columnas, añadir flags…

Todas las etiquetas se cambian en el LOAD.

Para poner espacios en el nombre de algún campo, hay que envolver el nombre entre […] ó “…”.

Se pueden concatenar datos con estructura similar de fuentes diferentes en una misma tabla.

Para hacer JOINS hay que tener cuidado con el orden de carga de las tablas en el Editor de Script. Las que se carguen primero van a estar más a la izquierda en el orden para el Join.

Si tenemos, por ejemplo, una tabla Pedidos: y otra Transporte:, con sus respectivos LOADs, haremos lo siguiente:

Cortamos el script de Transporte: y lo pegamos después de Pedidos:. Quitamos el nombre de la tabla Tranporte (Transporte:). Añadimos INNER/LEFT/RIGHT JOIN (Pedidos) antes del LOAD de

Transporte. Con esto, desaparece la tabla de Transporte y los campos se pegan

automáticamente a Pedidos.

TIP 3. Hay que intentar siempre llegar a un diagrama en estrella.En layout podemos insertar un objeto nuevo:Layout > Clic Derecho > Nuevo Objeto de Texto.

= COUNT(…) & CHR(13) & COUNT(DISTINCT …)donde el & sirve para concatenar y el CHR(13) es el retorno de carro.

Se puede usar el comando RESIDENT para crear una tabla resultado. Muestra lo que tiene la tabla que se indique hasta la pestaña en la que se encuentre. Por ejemplo:

INNER JOIN (Pedidos)LOAD DISTINCT *RESIDENT Productos;DROP TABLE Productos;

Page 4: Curso Qlikview

Se pueden crear y definir variables dentro del script.

TIP 4. Limpieza de Variables. No debe aparecer ninguna variable de script entre las variables de layout.

Es conveniente limpiar todas las variables al terminar el script.

Hay dos formas de definir una variable:SET: se le da un valor directo a la variable.LET: evalúa una expresión.

Podemos meter una variable que indique dónde están los qvd con la información para el Cuadro de Mando:SET RUTA_QVD = ‘..\Datos_QVD’ ;

Al final del script creamos una pestaña Limpieza donde limpiemos las variables de script:LET RUTA_QVD = NULL();

TIP 5. Es conveniente guardar las tablas en ficheros qvd.Para esto, antes de la pestaña Limpieza, metemos una pestaña QVDs para que no la elimine. La sentencia es la siguiente:

STORE Entidad INTO [$(RUTA_QVD)\Entidad.qvd];

Podemos insertar campos en el layout:Layout > Clic Derecho > Seleccionar Campos.Seleccionamos los que queramos y los importamos al layout.

Qlikview tiene Inteligencia Asociativa, todo campo funciona como un filtro si todo está bien relacionado en el Editor de Script.

Podemos incluir funciones en el LOAD. La mayoría se pueden ver en la pestaña Funciones en el Editor de Script.

Función suma: SUM(…) Función mayúsculas: UPPER(…)

TIP 6. En lo posible, hacer todos los cálculos en el script.

TIP 7. Utilizar flags.

Se pueden cargar tablas de tipo INLINE, tablas creadas manualmente. Para ello es conveniente crear una pestaña de Inlines en el Editor de Script.Editor de Script > Insertar > Cargar Sentencia > Cargar Inline.

LOAD * INLINE [CAMPO1, CAMPO2, … (etiquetas)VALOR1, VALOR2, … (valores, tantas líneas como registros)

];

Page 5: Curso Qlikview

Se suelen usar para crear tablas de diccionario temporales:

LOAD * INLINE [País_Temp, País_FinalEEUU, Estados Unidos de AméricaEstados Unidos, Estados Unidos de AméricaUSA, Estados Unidos de América

];

Se puede crear una tabla de mapeo temporal con sólo dos columnas:

MAPPING LOAD * INLINE […];

Si queremos hacer una lookup con esta tabla de mapeo, se puede usar la siguiente sentencia de ejemplo. Mapeamos el campo País_Cliente, y devolvemos un ‘Sin Asignar’ si no hay una correspondencia:

APPLYMAP ( tabla_de_mapping, País_Cliente, ‘Sin Asignar’);

Función quita espacios: TRIM(…)

Existe una función que genera registros automáticamente AUTOGENERATE. Sirve para generar calendarios sobre todo:

LOADRECNO() AS [NUMERO REGISTRO],RAND() AS [VALOR],

AUTOGENERATE(10000);

Para insertar un fichero de script (como un calendario), podemos recurrir a la siguiente opción:Editor de Script > Insertar > Archivo de Script > Seleccionamos el fichero de Calendario.

Se pueden ordenar el resultado de una select poniendo un ORDER BY en la misma, igual que se pondría en Oracle.

Función da valor de la variable: PEEK (‘FechaPedido’,0);El 0 que aparece al final de la cadena indica que va al primer registro de la tabla. Sustituyéndolo por un -1 se va al último registro de la tabla:

PEEK(‘FechaPedido’,-1);

Otros ejemplos:YEAREND(PEEK(‘FechaPedido’,-1));

La función YEAREND da el último día del año.

YEAREND($(V_DATEMAX)); /* Pasándole una variable */

Page 6: Curso Qlikview

CHR(39): Comilla

Función transforma a fecha: DATE() /* Se puede meter un número */

Se puede hacer GROUP BY igual que en Oracle:

LOAD…SUM()MAX()MIN()AVG()

FROM …GROUP BY …

Como recuerdo, podemos usar RESIDENT en lugar de FROM para llamar a una tabla local generada por QV.

Función que transforma a número: NUM(Mes, ‘00’) /* Da el mes como número */Función NUM: NUM#(Importe, ‘0,00$’);

Se pueden crear claves compuestas para hacer los cruces entre tablas con más de un campo de cruce. Para ello se hace uso de los números hash, claves únicas por registro.

AUTONUMBERHASH128(campos que conforman la clave);

Se pueden crear tablas cruzadas con la función CROSSTABLE:CROSSTABLE(Fecha_Presupuesto, Datos);

Qlikview concatena tablas con la misma estructura:

CONCATENATENOCONCATENATE: Evita que se concatenen tablas con misma estructura.QUALIFY: Cualifica tablas metiendo el nombre de la tabla en la columna. Lo

hace hasta que se ponga un UNQUALIFY *. Se pueden cualificar sólo algunos campos, con esto se evita que los campos se unan al compartir el nombre.

QUALIFY Campo1, Campo2;UNQUALIFY

Función EXISTS(Campo1, Campo2)Deja en la tabla 2 los registros que aparecen en la 1.

Función NOT EXISTS(Campo1, Campo2)Deja en la tabla 2 los registros que no aparecen en la 1.

Función INTERVALMATCHINTERVALMATCH(Campo1) SELECT IntervaloInferior, IntervaloFinFROM (TablaIntervalo);

Page 7: Curso Qlikview

TIP 8: Siempre hay que poner comillas cuando la variable es de cadena.

FOR EACH…

Para conectar con una base de datos de Oracle hay que modificar el TNSNAMES. Hay que crear una conexión ODBC y es conveniente que tenga el mismo nombre tanto en Desarrollo como en Producción.

Función ADDMONTHS(…, -1); /* Resta un mes */

CHR(255): Espacio.

Es posible no recargar el repositorio completo:Archivo > Recarga Parcial

Eso sólo recarga las variables o las sentencias a las sentencias a las que se les añada un ADD antes del LOAD.

ADD LOAD…

Otras funciones de uso:RENAME TABLERENAME FIELDNULL() AS CampoNOT ISNULL(Campo)

CARGAS INCREMENTALES

Hasta ahora se han hecho cargas totales, pero se pueden hacer cargas incrementales para no recorrer la BBDD completa siempre que se haga una carga. Para cargar un mes más, se siguen los siguientes pasos:

Leemos el mes a cargar (201111) Leemos el QVD desde 201101 hasta 201110. Concatenamos todo. Actualizamos el QVD.

CARGAS DIFERENCIALES

Para hacer cargas diferenciales necesitamos un campo “Fecha Última Modificación” para cargar sólo registros únicos o con una fecha de modificación determinada.

V_FECHA_CARGA = DATE(‘01/12/2011’); sustituiría a TODAY()-1; para hacer una carga diferencial.

Cuadro de Lista > Clic Derecho > Propiedades > Presentación☐ Sólo una columna☑ Número de columnas fijo /* Se hace la columna menos alta */

Se puede habilitar la generación de ficheros de log o trazas de la carga.

Page 8: Curso Qlikview

Configuraciones > Propiedades de Documento > General☑ Generar Archivo de Log

PERFILES DE SEGURIDAD DE USUARIOS

Se pueden crear perfiles de seguridad para los usuarios. Para ello se crea una pestaña, Hidden Script, antes de la pestaña Main.Editor de Script > Archivo > Crear Script Oculto

Los perfiles se pueden coger directamente desde el Servidor LDAP o insertando una INLINE:

Editor de Script > Sección de Acceso > Inline (Seguridad NT Básica)ADMIN|PQUINTANA|INDRA\PQUINTANAUSER|DNOVDAM|INDRA\DNOVDAM

Podemos modificar qué puede hacer un usuario normal:Configuraciones > Propiedades de Documento > Seguridad

Se pueden crear varios perfiles de seguridad. Para ello, hay que filtrar por uno de los campos, que debe estar en mayúsculas (por ejemplo, franquicias).

Configuraciones > Propiedades de Documento > Al Abrir☑ Reducción Inicial de Datos☐ Exclusión Estricta

La exclusión estricta hace que el fichero no se abra si no tiene datos para su perfil.

Función QVUSER(): Muestra el usuario con el que se ha conectado al CdM.Función STAR IS *; Reconoce el carácter * como el asterisco de Oracle. Podemos poner el carácter que queramos.

DISEÑO

En Qlikview, el documento está dividido en pestañas y estas en capas donde se insertan los objetos. En esto es muy parecido a Photoshop.

Antes de empezar a diseñar hay que tener muy claro y bien estructurado el contenido de todas las capas.

Vamos analizando todas las opciones de formato:

Configuraciones > Propiedades de Documento

General: Título Autor Compresión (Alta)

Page 9: Curso Qlikview

Mensajes de Alerta Color de Fondo

o Fijo (Degradado)o Calculado

Siempre que aparezcan tres puntos suspensivos (…) significa que podemos insertar una constante o una expresión. Se traduce en “Definido por…”

Mensajes de Ayuda Estadísticas de Memoria: Optimizar, va guardando una especie de log de

cómo se utiliza la memoria. ☑ Generar log ☑ Ocultar pestañas: Permite hacer la navegación tipo web. Por motivos de

seguridad se puede evitar que un usuario vea una pestaña. ☐ Webserver: Muestra cómo se vería en Firefox/Safari. Juego de Caracteres (ANSI) ☐ Color de Fondo: Es bueno poner un color que no sea blanco a la hora de

diseñar.

TIP 9: Se debe poner un cuadro de texto con un color diferente para limitar el tamaño del cuadro de mando, adaptado a la resolución de pantalla. Así evitamos salirnos del mismo.

Modo Asignar Estilo (Avanzado) Estilo de Objeto de Hoja (Cristal)

Al Abrir ☐ Selección Inicial basada en la sección de acceso: Selecciona opciones por

defecto por su perfil, pero no limita. ☐ Carga Binaria.

HojasCada hoja tiene un identificador.Aquí están descritos todos los objetos por hoja, ocultos o no. Esto sirve para ver hojas ocultas (Modo Mostrar).Podemos pinchar en el objeto y ver sus propiedades desde aquí.

La capa está en Diseño, dentro de Propiedades de Objeto.

ServidorMás adelante.

PlanificaciónSe hará en el servidor.

VariablesSe pueden ver en el script de carga o en el cuadro de mando.Configuraciones > Panel de Variables > Añadir /* Aquí las definimos*/

Page 10: Curso Qlikview

TIP 10: Cualquier filtro afecta a las variables.

Cuadro de EntradaPuedo ir modificando mis variables o el usuario.Importante: Reglas en variables!

☐ Mensaje de ErrorLista de Valores

☐ Predefinido (Botones de Incremento)

DisparadoresAcción > Externo > Establecer Variable

GruposRevisar…

TablasPodemos marcar dimensiones para que le aparezcan al usuario en otro color.Importante Editar Etiquetas.

TIP 11: Hay que intentar usar siempre Arial / Times New Roman / Calibri como fuentes del Cuadro de Mando.

Las opciones siguientes se aplican sobre los campos traídos al layout del cuadro de mando:

Propiedades > Presentación☐ Sólo una columna☑ Número de Columnas Fijo

Podemos meter minigráficos en los selectores de campo si nos hace falta, además de expresiones.

Después de seleccionar varios elementos, podemos moverlos a través del layout:+ Ctrl: los mueve píxel a píxel.+ Ctrl + Shift: los mueve a saltos.

Existen dos elementos imprescindibles, uno que nos muestra los campos seleccionados y otro que nos permite buscar:Layout > Clic Derecho > Nuevo Objeto > Cuadro de Selecciones ActualesLayout > Clic Derecho > Nuevo Objeto > Objeto de Búsqueda.

Se pueden listar los campos separados por ;

Si pegamos objetos con la opción “Pegar Objeto de Hoja como Enlace”, estamos insertando el mismo objeto, por lo que si lo movemos en la plantilla lo va a mover en todas las pestañas.Al mover un objeto: Objetos Enlazados > Ajustar posición de objetos enlazados.

Page 11: Curso Qlikview

Se pueden insertar Gráficos Evolutivos.☐ Desvinculado: Ninguna selección afecta al gráfico.☐ Sólo lectura: No se puede seleccionar nada en el gráfico.

Si tenemos un gráfico sobre otro, es bueno tener una condición de cálculo.ONLY(Año) = 1997

Sólo se evaluará si hay un solo valor en el campo marcado y si se cumple la condición.

El mensaje de error que se muestra se puede modificar sin problemas:Propiedades > General > Mensajes de Error.

Otras funciones útiles:GETSELECTEDCOUNTGETPOSSIBLEVALUES

Propiedades de Gráfico

Cambio de Estilo Rápido: Ayuda a cambiar el gráfico.

Dimensiones Editar grupos (Cíclicos/Jerárquicos) Animar (los gráficos se mueven) ☐ Suprimir cuando el valor es nulo : elimina las filas cuando el atributo no

existe. ☐ Mostrar todos los valores.

ExpresionesSe pueden crear expresiones como referencias a otras:

Por orden: columna(1)_columna(2) (no es bueno) Por nombre

Opciones de Presentacióno Texto: Normal.o Imagen: Podemos meter semáforos aquí.o Indicador LED: Reloj digital.o Enlace: Crea un enlace a una web.

= ‘web’&’<url>web’ /* de la primera ‘web’ se coge el nombre que se muestra en el cuadro de mando */

Acumulación: suma los valores de un campo (frecuencia absoluta acumulada). Sólo cambia cómo se presentan los valores, el dato interno no varía.

Líneas de Tendencia: crea una por dimensión. ☐ Expresiones como leyenda: quita la expresión que le indique de la

leyenda.Los totales se pueden quitar en las tablas:

Page 12: Curso Qlikview

Modo Total Sin Totales Expresión Total …

Nuevo Objeto de Hoja > Botón General (Puede activarse bajo condición) Acción: Definimos una acción.

Se añade el $ en las variables cuando se quiere hacer referencia a cómo está definida la variable.

Negrita: ‘<b>’Cursiva: ‘<i>’Subrayado: ‘<u>’

Se puede mostrar en un gráfico el gajo de la fecha máxima: Mostrar Gajo: AÑO = MAX(TOTAL AÑO)