martes, 20 de enero de 2009

QlikView - Seleccion y Creación de carpeta

Para Seleccionar y Crear una carpeta en el sistema es necesario ralizar lo siguiente

BrowseForFolder = ""
Dim objSHL
Set objSHL = CreateObject("Shell.Application")
Dim objB4F
On Error Resume Next
Set objB4F = objSHL.BrowseForFolder(&H0,sPMT,&H0031,&H0011)
BrowseForFolder = objB4F.Self.Path
if (not objB4F is nothing) then
Dim fso, fldr
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.CreateFolder(BrowseForFolder&"\NombreCarpeta")
'Aqui agregar codigo donde se hace algo
'dentro de la carpeta creada
'como por ejemplo exportar todos los objetos
'de una hoja como xml
For i = lBound(Objects) To uBound(Objects)
id = Objects(i).GetObjectId
Objects(i).WriteXmlPropertiesFile BrowseForFolder&"\NombreCarpeta\ObjBM"&i&".xml"
next
'Mensaje de finalización
MyValue= MsgBox ("Process Export is sucessfull in "&BrowseForFolder&"\NombreCarpeta\*",64,"Export")
end if

lunes, 19 de enero de 2009

QlikView - NetworkDays

La función NetworkDays sirve para evaluar fechas tomando en cuenta dias laborales, es decir, de lunes a viernes y se utiliza de la siguiente manera.

como expresión o dimensión (calculada)


networkdays(fechaInicio,FechaFinal)-1


es decir si tenemos las siguientes fechas.
Viernes: 16-01-2009 a Lunes: 19-01-2009

si obtenemos la diferencia real es

'19-01-2009'-'16-01-2009' = 3 días (Sábado, Domingo, Lunes)


pero con la función

networkdays('16-01-2009','19-01-2009')-1 = 1 día (Viernes a Lunes)


notar que se debe restar por -1 pues la función toma la diferencia con las fecha de incio y final inclusive.

miércoles, 14 de enero de 2009

QlikView - Carga Incremental




Qlikview es una herramienta de bussines intelligence, que no utiliza cubos OLAP, por lo que utiliza una nueva metodologia creada por ellos mismos llamada, AQL, descrita en post anterior de Qlikview que maneja finalmente la Nube de Datos (Cloud Data).

Esta nube de datos se debe recargar para actualizar la información y poder manejarla en la aplicación.
La carga simple, en casos donde se manejan grandes cantidades de información se puede demorar un tiempo considerable, por lo que existen tecnicas para reducir este tiempo de racarga y se llama "Carga Incremental".

Elementos necesarios para la recarga
- Archivos QVD.
- En la tabla de la base de datos un campo con la fecha de la ultima actualizacion.

un ejemplo para recarga incremental en el script es el siguiente:

Si se desea hacer la carga incremental de la tabla [NombreTabla], por campo [UltimaActualizacion]


Let FechaActual = now();
//fecha donde se hizo la ultima recarga
Let UltimaRecarga = ReloadTime();

[NombreTabla]:
//hasta aqui se cargaran los registros nuevos
//que fueron insertados y los modificados
SQL SELECT
*
FROM
[NombreTabla] as NT
WHERE
NT.[UltimaActualizacion] >= $(UltimaRecarga)
AND NT.[UltimaActualizacion] < $(FechaActual);
//aqui se uniran los registros nuevos con los
//previamente cargados en los archivos qvd
CONCATENATE
LOAD * FROM [NombreTabla].qvd (qvd)
WHERE NOT EXISTS( [ClavePrimaria] );
//finalmente se eliminaran los que ya no existen
INNER JOIN
SQL SELECT [ClavePrimaria]
FROM [NombreTabla]
//if no se producjo ningun error
if ScriptError = 0 then
//se guarda el archivo QVD con los datos actualizados
STORE [NombreTabla]
INTO [NombreTabla].qvd;
//se actualiza la fecha de la ultima recarga
Let UltimaRecarga = FechaActual;
end if