Está en la página 1de 81

Parte 1 Script

Derechos reservados Gmez Portas Intranet, S.C.

Metodologa:

Definicin de requerimientos Quin lo quiere saber? Definiciones, prioridades y Qu se quiere saber? Preguntas a responder con el modelo, entrevistas Definicin de indicadores Qu indicadores me ayudan a saber lo que quiero? Obtencin y concentrado de datos A partir de qu datos operativos se pueden construir los indicadores? Realizacin del Modelo de Anlisis Pruebas y validacin Entrega

Metodologa:

Definicin de requerimientos Quin lo quiere saber? Definiciones, prioridades y Qu se quiere saber? Preguntas a responder con el modelo, entrevistas Definicin de indicadores Qu indicadores me ayudan a saber lo que quiero? Obtencin y concentrado de datos A partir de qu datos operativos se pueden construir los indicadores?
Documento de definiciones

Modelo de anlisis
1. 2. 3. 4. 5. 6.

Carga de datos mediante un script Diseo de elementos generales (pestaas) Desarrollo del contenido cada pestaa Desarrollo del Interfaz de usuario homogneo Pruebas y validacin Entrega

En este curso veremos el punto del script durante dos sesiones y los dems en las tres sesiones restantes.

Se utilizar el documento de definiciones del proyecto QWTProject Plan.pdf En l estn indicadas las variables que se utilizarn y la informacin que se debe de incluir en el modelo.

Key Measures: Key Performance Indicators (KPIs): Key Dimensions: . Trends: Key Selection Filters: Security: Source Data Descriptions:

Pueden estar en mltiples fuentes: Access, SQL, Excel, etc. Las tablas tienen mltiples campos Las tablas se relacionan automticamente si tiene dos campos con el mismo nombre Veremos como forzar una relacin y cmo impedir que se establezca una. El conjunto de tablas relacionadas forma la base de datos asociativa de Qlikview

En una de las funciones principales del script Pueden ser:


Cualquier tipo de archivo de texto separados por un caracter, ej. Una coma El resultado de un query a una base de datos mediante clasulas SQL via OLE DB/ODBC. Archivos previos de QlikView-files. Archivos de datos QlikView Data (qvd). Archivos de Excel. Tablas HTML carcadas localmente o desde un servidor externo. Tablas XML .

Crear una nueva hoja (Archivo-Nuevo) Ver editor de script (Archivo-Editor de script)

Recargar Ejecuta el script, cierra la ventana de dilogo y abre la venta de propiedades de la hoja Depurar Ejecuta el script en modo de depurador, de manera que cada paso puede ser monitoreado y los valores de las variables tambin puedan ser examinadas. Guardar Guarda todo el documento en un archivo incluyendo datos, script y los objetos que muestran los datos y su disposicin en las hojas

Imprimir pestaa Permite imprimir la pestaa actual de entre las varias en que puede dividirse un script (Main, etc).
Cortar Corta el texto seleccionado y lo guarda en el clipboard. Copiar Copia el texto seleccionado y lo guarda en el clipboard. Pegar Pega el texto guardado en el clipboard en la posicin donde est el cursor.

Buscar Busca el texto especificado en el cuerpo del script pero solo en la pestaa activa Aadir nueva pestaa Agrega una nueva pestaa. El script es ejecutado pestaa a pestaa de izquierda a

Visor de tablas Muestra el visor grfico de tablas y las relaciones entre campos

Opciones de la ventana del editor de script


Archivo: Permite guardar el documento, exportar e imprimir el script Editar: Permite seleccionar, copiar, cortar y pegar texto de la pestaa actual. Tambin tiene las funciones de bsqueda de testo y reemplazo. Pestaa: Permite el manejo de las pestaas del script. Aadir, mover y cortar pestaas. Configuracin: Incluye la configuracin del programa y las opciones de usuario. Ayuda: Abre la ayuda de Qlikview

La primera columna un icono y el nmero de lnea del script. Con el icono del martillo (cuando se muestra) se abre un asistente para el comando de la sentencia.

La pestaa de datos contiene los comandos bsicos para cargar datos en QlikView. Los comandos en Base de Datos se utilizan para crear una conexin a una fuente de datos y para seleccionar campos de la misma. Se puede utilizar ODBC o OLE DB como interfaz a la base de datos. Utilice el botn de Conectar para seleccionar la fuente de datos, y generar la sentencia apropiada en el script. Utilice el botn Select.. para especificar campos y las tablas de la fuente de datos elegida, y generar la sentencia apropiada en el script.

Los comandos en Datos desde Archivos se utilizan para generar las sentencias para cargar datos desde archivos. Use el botn de Ficheros Planos para seleccionar archivos de texto en varios formatos, incluyendo Excel y los datos de QlikView archivos (del qvd). Use el botn del Archivo QlikView para seleccionar archivo de QlikView (*.qvw). Al seleccionar un archivo y presionar OK se generarn una declaracin binaria. Solamente se permite una declaracin binaria por script, y debe ser la primera declaracin en l.

Use el botn Archivos Web para que mediante la especificacin de una direccin Web, QlikView se traiga la pgina y seleccione una tabla de ella como fuente de datos. Use el botn Datos de Campo para cambiar el origen de un campo ya utilizado

Marque la opcin Rutas Relativas para utilizar las trayectorias relativas en vez de los caminos absolutos para las sentencias generadas. Marque la caja Utilizar FTP si la carga de archivos se har de un servidor FTP.

La pestaa de Funciones se puede utilizar para generar las funciones que se usarn en el script QlikView. La opcin Categora de Funcin contiene una lista de categoras que agrupan a todas las funciones. Seleccione una categora de la lista para ver las funciones correspondientes en la lista Nombre de Funcin. La opcin Nombre de Funcin contiene una lista de funciones estndar de QlikView. Use el botn Pegar para incorporar, en la posicin actual del cursor, la funcin seleccionada.

La pestaa de Variables se utiliza para mostrar los valores de las variables de sistema y las definidas por el usuario. Para definir las variables usar la pestaa Variables en el men ConfiguracionesPropiedades del Documento

La pestaa de Configuracin se utiliza para seleccionar algunas opciones que modifican la forma en que trabaja QlikView. Utilice al grupo de los Privilegios de Script para utilizar o no la sentencia Execute y para utilizar el calificador mode is write en las sentencias Select en el script. Si no estn habilitadas estas opciones, no podr ejecutar programas externos ni escribir a la Base de Datos. . Use el ajuste en Configuracin si desea o no que los campos de usuario y contrasea se encripten al conectarse a la base de datos por medio de OLE/ODBC.

Modelo de ventas de una tienda de ropa Cargaremos


Una base de datos en Access (qwt.mdb): productos, categoras, clientes, pedidos, envos Una hoja de Excel (EmpOff.xls): Empleados y oficinas Un archivo texto generado por un sistema AS/400 (suppliers.dif): proveedores

Notar que
Hay campos comunes a diferentes tablas que se quieren relacionar: OrderID Hay campos comunes a diferentes tablas que NO se quieren relacionar: City

Fuente OLE DB
Seleccionar en Base de Datos, OLE DB, Forzar a 32 bits y pulsar el botn Conectar Seleccionar Microsoft Jet 4.0 OLE DB Provider y pulsar botn Siguiente

OLEDB CONNECT32 TO [Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C: ];

Fuente OLE BD
Buscar a directorio Curso-Archivos Seleccionar QWT.mdb y pulsar botn Aceptar

Cada lnea de script termina con un punto y coma ; Los comentarios en script

Anteponiendo REM a una o varias lneas es un comentario hasta el punto y coma final // El comentario es una sola lnea y no necesita ;. /* */ comentar el texto, as sean varias lneas , que exista entre los caracteres /* y los */

Escribir:
Rem este es un comentario de dos lneas; // este es un comentario de una sola lnea /* este es mi primer script en Qlikview hasta ahora todo ha sido muy fcil */

Ver contenido de las bases de datos

Ver contenido de las bases de datos

Seleccionar Load Precedente Seleccionar la tabla Customers En la caja Campos seleccionar todos los campos arrastrando el apuntador del ratn dentro de la caja de seleccin. Se pueden seleccionar varios campos haciendo click en el nombre de cada campo y manteniendo apretada la tecla Cntrl En la ventana de Script se puede ver el cdigo de script que se generar Pulsar el botn Aceptar Escribir antes del Load el nombre de la tabla, Clientes:. con este nombre se referir QlikView a esta tabla Guardar el modelo con el nombre Prctica Script.qvw

OLEDB CONNECT 2 TO [Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Curso script QV10 ]; Rem este es un comentario de dos lneas; // este es un comentario de una sola lnea /* este es mi primer script

Clientes:
LOAD Address, City, CompanyName, ContactName, Country, CustomerID, Fax, Phone, PostalCode, StateProvince; SQL SELECT Address, City, CompanyName, ContactName, Country, CustomerID, Fax, Phone, PostalCode, StateProvince FROM Customers;

Poner el nombre Clientes:

Poner etiqueta Clientes: y Recargar

Seleccionar City, CompanyName y Country

Resultado. Seleccionar Argentina

Al momento de cargar de una fuente de datos es posible renombrar cualquier campo utilizando una etiqueta. Esto permite dos cosas:
Forzar un enlace entre campos que sabemos que estn relacionados al ponerle a los dos un mismo nombre Evitar que dos campos con el mismo nombre original se enlacen, al cambiarle a alguno de ellos el nombre

El cambio se hace por medio de la sentencia as. Ej. Load Address as direccion, City as ciudad;

Las etiquetas son sensibles a las maysculas y las minsculas. Ej. Direccion es diferente a direccion

Clientes: LOAD Address as ClienteDireccion, City as ClienteCiudad, CompanyName as ClienteCompania, ContactName as ClienteContacto, Country as ClientePais, CustomerID as ClienteID, Fax as ClienteFax, Phone as ClienteTelefono, PostalCode as ClienteCP, StateProvince as ClienteEstado;

Resultado. Seleccionar Argentina

OLEDB CONNECT32 TO [MS Access Database;DBQ=Files\Archivos\QWT.mdb]; Rem este es un comentario de dos lneas; // este es un comentario de una sola lnea /* este es mi primer script

Clientes:
LOAD Address as ClienteDireccion, City as ClienteCiudad, CompanyName as ClienteCompania, ContactName as ClienteContacto, Country as ClientePais,

CustomerID as ClienteID,
Fax as ClienteFax, Phone as ClienteTelefono, PostalCode as ClienteCP, StateProvince as ClienteEstado; SQL SELECT Address, City, CompanyName, ContactName, Country, CustomerID, Fax, Phone, PostalCode, StateProvince FROM Customers;

Es posible utilizar datos que se encuentren en hojas de Excel. El archivo se llama EmpOff.xls y tiene los datos de oficinas y empleados. Son dos hojas, Employee y Office. La de empleados contiene los campos:
Id del empleado, Apellidos, Nombre, Ttulo, Fecha de ingreso, ID Oficina, Extensin Tel., A quin reporta y Salario Anual

Para cargar la hoja active el botn ficheros planos en la hoja de script

Ir al directorio Archivos y seleccionar EmpOff.xls

Script generado:
LOAD EmpID, [Last Name], [First Name], Title, [Hire Date], Office, Extension, [Reports To], [Year Salary] FROM ..\Archivos\EmpOff.xls (biff, embedded labels, table is Employee$);

Note los parntesis cuadrados para enmarcar los campos que tienen espacios en el nombre. Tambin se pueden utilizar comillas dobles

Pasar a:
Empleados: LOAD EmpID as EmpleadoID, [Last Name] as EmpleadoApellido, [First Name] as EmpleadoNombre, Title as EmpleadoTitulo, [Hire Date] as EmpleadoFechaIng, Office as EmpleadoOficina, Extension as EmpleadoExtTel, [Reports To] as EmpleadoReporta, [Year Salary] as EmpleadoSalario FROM ..\Archivos\EmpOff.xls (biff, embedded labels, table is Employee$);

Cargar el script y mostrar

Cargar el script y mostrar

Hasta ahora tenemos dos tablas sin relacin entre ellas, es decir seleccionar un campo en la tabla Clientes no nos selecciona nada en la tabla Empleados

Para ver cmo se relacionan, veamos el esquema general. Es la tabla de Ordenes la que relaciona a los Clientes con los Empleados (vendedores)

Carguemos entonces la tabla de rdenes. Como ya tenemos una conexin definida a la Base de Datos donde est la tabla Orders, solo requerimos seleccionarla mediante el botn Select

Seleccionamos todos los campos y nos aseguramos que la opcin Load Precedente est marcada.

Script generado: Ordenes:


LOAD CustomerID, EmployeeID, Freight, OrderDate, OrderID, ShipperID; SQL SELECT CustomerID, EmployeeID, Freight, OrderDate, OrderID, ShipperID FROM Orders;

Cargar el script y mostrar

Cargar el script y mostrar

Hasta ahora tenemos tres tablas, qu tenemos que hacer para que se relacionen entre s?

Relacionar
1. ClienteID de Clientes con CustomerID de Ordenes 2. EmpleadoID de Empleados con EmployeeID de Ordenes

Script generado:
Ordenes: LOAD CustomerID as ClienteID, EmployeeID as EmpleadoID, Freight as OrdenPeso, OrderDate as OrdenFecha, OrderID as OrdenID, ShipperID as OrdenEmbarque; SQL SELECT CustomerID, EmployeeID, Freight, OrderDate, OrderID, ShipperID FROM Orders;

Cargar el script Practica Script 3.qvw y mostrar

Ahora tenemos tres tablas relacionadas

Pasar EmpleadoApellido y OrdenFecha. Notar el smbolo de la llave en los campos que relacionan las tablas.

Pasar EmpleadoApellido y OrdenFecha. Notar el smbolo de la llave en los campos que relacionan las tablas.

El mapeo de datos nos permite cambiar los datos de una tabla por otros. Es necesario Tener un diccionario de datos con las equivalencias y Aplicar estas equivalencias (mapear) a un campo Los datos del campo a cambiar se revisan al momento de correr el script, y si el dato se encuentra en el diccionario se reemplaza por su equivalente. Si no est se deja intacto el dato original. Deben de especificarse antes de la seccin donde se cargan los datos, en una pestaa que concentre todos los mapeos y que est a la derecha de la pestaa Main. Esto nos permite: Hacer ms legibles los datos de algn campo: si los datos de la ciudades son 1,2,3, etc. mapeando podemos cambiar el 1 por Tampico, el 2 por Colima, etc. Agrupar datos que son lo mismo pero se escribieron diferente. Ej. Si en la tabla de ventas aparecen vendidos lpiz, lapiz, lapis no es porque se trate de artculos diferentes sino que lapiz est mal escrito.

Ir a la pgina del editor de script, recargar datos y cambiar el campo EmpleadoApellido por EmpleadoOficina.

Queremos cambiar el campo EmpleadoOficina para que en lugar de que aparezcan nmeros no muestren los nombres de la oficina, En EmpOff.xls, pestaa Office se puede ver:

Es decir, hay que cambiar: 1, Estocolmo 2, Lund 3, Paris 4, Niza 5, Seattle

1. Ir al editor de script y en la opcin Pestaa activar Aadir pestaa

2. Dar el nombre Mapeos 3. Ir de nuevo a la opcin Pestaa y activar Ascender

Agregar la sentencia Mapping, en la pestaa Mapeos Oficinas: Mapping Load * inline [ 1, Estocolmo 2, Lund 3, Paris 4, Niza 5, Seattle ];

Ya tenemos el diccionario definido, ahora hay que aplicarlo al campo EmpleadoOficina. En la pestaa Main, hacer los cambios ApplyMap('Oficinas',Office) as EmpleadoOficina, // Office as EmpleadoOficina,

Ahora tendremos:

Supongamos que tenemos tres tablas de una compaa que vende en todo Mxico. Tres tablas tienen entre otros campos los siguientes. Clientes ClienteID Telefono Ordenes Proveedores ClienteID ProductoID ProductoID Telefono

El problema surge cuando Qlikview se encuentra con campos con el mismo nombre que no deberan ser relacionados. Al hacer la carga del script aparecern indicaciones de que se han generado tablas intermedias para manejar esta situacin. Es por esto que las mejores prcticas dictan que cada campo de las tablas a utilizar contengan el nombre de la tabla origen.

Cargar el script Practica Script 2, el cual tiene las siguientes tablas relacionadas. Note que existe una relacin circular a igualar el campo Telefono de Proveedores con el mismo campo en la tabla Clientes.

Al cargar QlikView avisa de que existe una referencia circular y que ha desconectado una o varias tablas . Estas se muestran con los enlaces con lnea punteada. Generalmente se desconectan las tablas ms grandes, en nuestro caso en la tabla DetallesOrd.

Se han detectado una o ms referencias circulares en la estructura de su base de datos. Esto puede ocasionar resultados ambiguos y debe por tanto ser evitado. QlikView interrumpir las referencias circulares configurando una o varias tablas como parcialmente desconectadas. Se puede modificar la configuracin de las tablas parcialmente desconectadas una vez ejecutado el script en la pgina Tablas del cuadro de dilogo Propiedades del Documento.

Hemos incluido el campo ProductoID de la tabla DetallesOrd. Ntese que al estar desconectada la tabla no se filtra su contenido al seleccionar un valor de cualquiera de las otras tablas. Qu tenemos que hacer para remediar este problema?

Debemos renombrar alguno de los campos Telefono, o mejor, seguir las mejores prcticas e incluir en el nombre de los campos los nombres de las tablas. Editar el script comentando las lneas de Telefonos y quitando el comentario de la lnea inmediata superior correspondiente, de las tablas Clientes y Proveedores.

Quitando la referencia circular, la tabla DetallesOrd se vincula con las dems y el campo ProductoID se incluye en los filtrados.

Cuando dos o ms tablas contienen campos con el mismo nombre, QlikvView generar enlaces sintticos para relacionar las tablas. Estos enlaces alentan al modelo y lo hacen ms difcil de entender y de mantener. Proveeddores Direccin Ciudad Oficinas

Direccin
Ciudad

Dos tablas contienen dos enlaces que no deberas de estar relacionados, ya la direccin y ciudad de un proveedor no estn relacionados con los mismos campos de la oficinas de la compaa. Otra razn por la que las mejores prcticas dictan que cada campo de las tablas a utilizar contengan el nombre de la tabla origen. Cargar y correr Practica Script 3.qvw

Cargar el script y mostrar

Dado que tanto la tabla Proveedores como la de Oficinas tienen en comn los campos Direccin y Ciudad, QlikView gener la tabla sinttica SSyn 1. Adems la tabla Oficinas est aislada de la de Empleados. Cmo corregimos esta situacin?

Debemos renombrar los campos Direccin y Ciudad de las tablas Proveedores y Oficinas. Y en la tabla Oficinas cambiar de nombre al campo Oficina por EmpleadoOficina .

Es posible utilizar datos que se encuentren en tablas de acceso pblico en un sitio Web.
http://en.wikipedia.org/wiki/List_of_capitals_and_largest_cities_by_countr y

Los datos de la pgina Web solo se pueden leer si estn en una tabla en formato HTML y en columnas separadas. Esto es importante porque algunas tablas son grficas o estn hechas en PDF y no se pueden importar. Ver en el navegador la pgina, en el directorio del curso est el enlace. Cargar Prctica Script 4.qvw Correr la carga del script

Una vez que se corra el script se mostrar el campo Capital. Note que ahora hay muchos ms pases que antes, pero no todos contienen datos sobre ventas.

QlikView ofrece un mtodo de correr el script de carga de datos en forma de depuracin, permitiendo encontrar errores.

En la pgina del editor de script, utilizar el men Depurar

Aparecer la siguiente ventana

Podremos correr el script entres formas diferentes:

Los puntos de interrupcin se ponen haciendo clik en la columna de nmeros en la lnea de sentencia deseada.

Ejecutar: Correr el script de forma continua hasta terminarlo o hasta que llegue a un punto de interrupcin Animar. Similar a la forma anterior pero se da una pequea pausa despus de cada sentencia, de forma que se pueda ver ms detalladamente cmo corre el script. Paso a paso: El script se corre sentencia por sentencia, detenindose despus de ejecutarla.

Tambin es posible limitar el nmero de registros que se cargan en todas las sentencias Load Select. Muy recomendable para depurara las primeras veces que se extraen registros de una base de datos. Haciendo clik en Finalizar Aqu, se finalizar la depuracin con los datos cargados hasta ese momento. Haciendo clik en Cancelar, se terminar la depuracin y se
descartarn los registros cargados.

Ver

Cargar bases de datos, cargar Excel Ver contenidos de bases de datos Mostrar algunos modelos del objeto Mappings Referencias circulares, tablas sintticas Cargar pgina Web http://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?ac cion=consultarSeries&series=SF43717&formatoDeSalida=1 Debugeo Mejores prcticas Linking fields no buenos para contar o list boxes (al curso de objetos)

No ver

Buffer, Resident, Drop table Load qvd Manipulacin de excell, pivotable, etc Join Aggregation, Concatenation Order by Previous (accessing data from the previous loaded record) Variables Seguridad