Cargado de datos

Download Report

Transcript Cargado de datos

Parte 1 Script
Derechos reservados
Gómez Portas Intranet, S.C.

Metodología:
◦ Definición de requerimientos ¿Quién lo quiere
saber? Definiciones, prioridades y ¿Qué se quiere
saber? Preguntas a responder con el modelo,
entrevistas
◦ Definición de indicadores ¿Qué indicadores me
ayudan a saber lo que quiero?
◦ Obtención y concentrado de datos ¿A partir de
qué datos operativos se pueden construir los
indicadores?
◦ Realización del Modelo de Análisis
◦ Pruebas y validación
◦ Entrega

Metodología:
◦ Definición de requerimientos ¿Quién lo quiere
saber? Definiciones, prioridades y ¿Qué se quiere
saber? Preguntas a responder con el modelo,
entrevistas
◦ Definición de indicadores ¿Qué indicadores me
ayudan a saber lo que quiero?
◦ Obtención y concentrado de datos ¿A partir de
qué datos operativos se pueden construir los
indicadores?
Documento de definiciones

Modelo de análisis
1.
2.
3.
4.
5.
6.

Carga de datos mediante un script
Diseño de elementos generales (pestañas)
Desarrollo del contenido cada pestaña
Desarrollo del Interfaz de usuario homogéneo
Pruebas y validación
Entrega
En este curso veremos el punto del script
durante dos sesiones y los demás en las tres
sesiones restantes.



Se utilizará el documento de definiciones del
proyecto
QWTProject Plan.pdf
En él están indicadas las variables que se
utilizarán y la información que se debe de
incluir en el modelo.







Key Measures:
Key Performance Indicators (KPI’s):
Key Dimensions: .
Trends:
Key Selection Filters:
Security:
Source Data Descriptions:





Pueden estar en múltiples fuentes: Access,
SQL, Excel, etc.
Las tablas tienen múltiples campos
Las tablas se relacionan automáticamente si
tiene dos campos con el mismo nombre
Veremos como forzar una relación y cómo
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
claúsulas 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 diálogo 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 también puedan ser examinadas.
Guardar Guarda todo el documento en un archivo incluyendo datos,
script y los objetos que muestran los datos y su disposición
en las hojas
Imprimir pestaña Permite imprimir la pestaña 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 posición donde
está el cursor.
Buscar Busca el texto especificado en el cuerpo del script pero solo
en la pestaña activa
Añadir nueva pestaña Agrega una nueva pestaña. El script es
ejecutado pestaña a pestaña de izquierda a
Visor de tablas Muestra el visor gráfico 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 pestaña actual. También
tiene las funciones de búsqueda de testo y reemplazo.
•Pestaña: Permite el manejo de las pestañas del script. Añadir, mover y cortar pestañas.
•Configuración: Incluye la configuración del programa y las opciones de usuario.
•Ayuda: Abre la ayuda de Qlikview
La primera columna un icono y el
número de línea del script. Con el
icono del martillo (cuando se muestra)
se abre un asistente para el comando
de la sentencia.
La pestaña de datos contiene los comandos básicos para cargar datos
en QlikView.
Los comandos en Base de Datos se utilizan para crear una conexión 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 botón de Conectar… para seleccionar la fuente de datos, y
generar la sentencia apropiada en el script.
Utilice… el botón 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 botón de Ficheros Planos… para seleccionar archivos de texto en
varios formatos, incluyendo Excel y los datos de QlikView archivos (del
qvd).
Use el botón del Archivo QlikView… para seleccionar archivo de
QlikView (*.qvw). Al seleccionar un archivo y presionar OK se generarán
una declaración binaria. Solamente se permite una declaración binaria
por script, y debe ser la primera declaración en él.
Use el botón Archivos Web… para que mediante la especificación de una
dirección Web, QlikView se traiga la página y seleccione una tabla de ella como
fuente de datos.
Use el botón Datos de Campo… para cambiar el origen de un campo ya utilizado
Marque la opción 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 pestaña de Funciones se puede utilizar para generar las funciones
que se usarán en el script QlikView.
La opción Categoría de Función contiene una lista de categorías que
agrupan a todas las funciones. Seleccione una categoría de la lista para
ver las funciones correspondientes en la lista Nombre de Función.
La opción Nombre de Función contiene una lista de funciones estándar
de QlikView.
Use el botón Pegar para incorporar, en la posición actual del cursor, la
función seleccionada.
La pestaña 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 pestaña ‘Variables’ en el menú ‘ConfiguracionesPropiedades del Documento’
La pestaña de Configuración 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 están habilitadas estas opciones, no
podrá ejecutar programas externos ni escribir a la Base de Datos. .
Use el ajuste en Configuración si desea o no que los campos de
usuario y contraseña 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, categorías, clientes,
pedidos, envíos
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 botón
Conectar
Seleccionar ‘Microsoft Jet 4.0 OLE DB Provider’ y pulsar botón 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 botón Aceptar
Cada línea de script termina con un punto y coma ;
Los comentarios en script
Anteponiendo REM a una o varias líneas es un comentario hasta el
punto y coma final
// El comentario es una sola línea y no necesita ;.
/* … */ comentará el texto, así sean varias líneas , que exista entre los
caracteres /* y los */
Escribir:
Rem este es un comentario de
dos líneas;
// este es un comentario de una sola línea
/* este es mi primer script
en Qlikview
hasta ahora todo ha sido muy fácil */
 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 ratón dentro de la caja de
selección.
 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 código de script
que se generará
 Pulsar el botón 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 Práctica 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 líneas;
// este es un comentario de una sola línea
/* 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 están
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 mayúsculas y las
minúsculas. 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 líneas;

// este es un comentario de una sola línea

/* 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, Título, Fecha de ingreso, ID
Oficina, Extensión Tel., A quién reporta y Salario Anual
 Para cargar la hoja active el botón 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 paréntesis cuadrados para enmarcar los campos que tienen
espacios en el nombre. También 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 relación entre ellas, es decir
seleccionar un campo en la tabla Clientes no nos selecciona
nada en la tabla Empleados
Para ver cómo 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
conexión definida a la Base de Datos donde está la tabla
Orders, solo requerimos seleccionarla mediante el botón
Select…
Seleccionamos todos los campos y nos aseguramos que la
opción 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 símbolo de la llave en
los campos que relacionan las tablas.
Pasar EmpleadoApellido y OrdenFecha. Notar el símbolo 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 sección donde se cargan los datos, en una
pestaña que concentre todos los mapeos y que esté a la derecha de la
pestaña Main.
Esto nos permite:
 Hacer más legibles los datos de algún 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 ‘lápiz’, ‘lapiz’, ‘lapis’ no es
porque se trate de artículos diferentes sino que ‘lapiz’ está mal
escrito.
Ir a la página 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 números no muestren los nombres de la oficina, En
EmpOff.xls, pestaña ‘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 opción
Pestaña activar Añadir pestaña…
2. Dar el nombre Mapeos
3. Ir de nuevo a la opción Pestaña
y activar Ascender
Agregar la sentencia Mapping, en la pestaña 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 pestaña Main, hacer los cambios
ApplyMap('Oficinas',Office) as EmpleadoOficina,
// Office as EmpleadoOficina,
Ahora tendremos:
Supongamos que tenemos tres tablas de una compañía que
vende en todo México. Tres tablas tienen entre otros campos
los siguientes.
Clientes
ClienteID
Telefono
Ordenes
ClienteID
ProductoID
Proveedores
ProductoID
Telefono
El problema surge cuando Qlikview se encuentra con campos
con el mismo nombre que no deberían ser relacionados. Al
hacer la carga del script aparecerán indicaciones de que se han
generado tablas intermedias para manejar esta situación.
Es por esto que las mejores prácticas 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 relación 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 línea punteada. Generalmente se
desconectan las tablas más grandes, en nuestro caso en la tabla DetallesOrd.
Se han detectado una o más 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 configuración de las tablas parcialmente desconectadas una vez ejecutado el
script en la página Tablas del cuadro de diálogo Propiedades del Documento.
Hemos incluido el campo ProductoID de la tabla DetallesOrd. Nótese 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 prácticas
e incluir en el nombre de los campos los nombres de las tablas.
Editar el script comentando las líneas de Telefonos y quitando el comentario de la línea
inmediata superior correspondiente, de las tablas Clientes y Proveedores.
Quitando la referencia circular, la tabla DetallesOrd se vincula con las demás y el campo
ProductoID se incluye en los filtrados.
Cuando dos o más tablas contienen campos con el mismo
nombre, QlikvView generará enlaces sintéticos para relacionar
las tablas. Estos enlaces alentan al modelo y lo hacen más difícil
de entender y de mantener.
Proveeddores
Dirección
Ciudad
Oficinas
Dirección
Ciudad
Dos tablas contienen dos enlaces que no deberías de estar
relacionados, ya la dirección y ciudad de un proveedor no están
relacionados con los mismos campos de la oficinas de la
compañía. Otra razón por la que las mejores prácticas 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 común los campos
Dirección y Ciudad, QlikView generó la tabla sintética SSyn 1. Además la tabla Oficinas
está aislada de la de Empleados.
¿Cómo corregimos esta situación?
Debemos renombrar los campos Dirección 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 público en un sitio Web.
http://en.wikipedia.org/wiki/List_of_capitals_and_largest_cities_by_country
Los datos de la página Web solo se pueden leer si están
en una tabla en formato HTML y en columnas separadas.
Esto es importante porque algunas tablas son gráficas o
están hechas en PDF y no se pueden importar.
Ver en el navegador la página, en el directorio del curso
está el enlace.
Cargar Práctica 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 más países que
antes, pero no todos contienen datos sobre ventas.
QlikView ofrece un método de correr el script de carga de
datos en forma de depuración, permitiendo encontrar
errores.
En la página del editor de script, utilizar el menú
Depurar
Aparecerá la siguiente ventana
Podremos correr el script entres formas diferentes:
Ejecutar: Correrá el script de forma continua hasta terminarlo o hasta que
llegue a un punto de interrupción
Animar. Similar a la forma anterior pero se da una pequeña pausa después
de cada sentencia, de forma que se pueda ver más detalladamente cómo
corre el script.
Paso a paso: El script se corre sentencia por sentencia, deteniéndose
después de ejecutarla.
 Los puntos de interrupción se ponen haciendo clik en la columna
de números en la línea de sentencia deseada.
 También es posible limitar el número 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 depuración con los
datos cargados hasta ese momento.
 Haciendo clik en Cancelar, se terminará la depuración y se
descartarán 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 sintéticas
Cargar página Web
http://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?ac
cion=consultarSeries&series=SF43717&formatoDeSalida=1
 Debugeo
 Mejores prácticas
 Linking fields no buenos para contar o list boxes (al curso de objetos)







 No ver









Buffer, Resident, Drop table
Load qvd
Manipulación de excell, pivotable, etc
Join
Aggregation, Concatenation
Order by
Previous (accessing data from the previous loaded record)
Variables
Seguridad