Si se quieren cargar los qvd correspondiente los últimos 3 días, y se tiene la fechas en el nombre del archivo con formato YYYYMMDD (AñoMesDia), teniendo algo como:
C:\Qlikview\QVD\Ventas_Diarias_20140128.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140127.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140126.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140123.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140122.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140121.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140127.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140126.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140123.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140122.qvd
C:\Qlikview\QVD\Ventas_Diarias_20140121.qvd
Una tecnica sería esta:
//--------------------------------------------------------------------------------
// PASO 1: Lee el nombre de todos los qvd y extraer la fecha
FOR Each file in FileList('C:\Qlikview\QVD\Ventas_Diarias_*.qvd')
Hitoricos:
First 1
Load
'$(file)' as NombreArchivo,
right(FileBaseName(),8) as Fecha_NombreArchivo
From $(file);
next file;
//--------------------------------------------------------------------------------
// PASO 2: Ordena de mayor a menor y elige los 3 archivos con mayor fecha
Ultimos_3_Dias:
first 3
NoConcatenate Load Distinct * Resident Hitoricos
Order By Fecha_NombreArchivo desc;
DROP Table Hitoricos;
//--------------------------------------------------------------------------------
// PASO 3: Carga qvd de los ultimos 3 dias
FOR i=0 to NoOfRows('Ultimos_3_Dias')-1
LET vUltimoArchivo = PEEK('NombreArchivo' , i, 'Ultimos_3_Dias');
Ventas_Ultimos_3_Dias:
LOAD Distinct *
FROM $(vUltimoArchivo) (qvd);
next;
DROP Table Ultimos_3_Dias;
// PASO 1: Lee el nombre de todos los qvd y extraer la fecha
FOR Each file in FileList('C:\Qlikview\QVD\Ventas_Diarias_*.qvd')
Hitoricos:
First 1
Load
'$(file)' as NombreArchivo,
right(FileBaseName(),8) as Fecha_NombreArchivo
From $(file);
next file;
//--------------------------------------------------------------------------------
// PASO 2: Ordena de mayor a menor y elige los 3 archivos con mayor fecha
Ultimos_3_Dias:
first 3
NoConcatenate Load Distinct * Resident Hitoricos
Order By Fecha_NombreArchivo desc;
DROP Table Hitoricos;
//--------------------------------------------------------------------------------
// PASO 3: Carga qvd de los ultimos 3 dias
FOR i=0 to NoOfRows('Ultimos_3_Dias')-1
LET vUltimoArchivo = PEEK('NombreArchivo' , i, 'Ultimos_3_Dias');
Ventas_Ultimos_3_Dias:
LOAD Distinct *
FROM $(vUltimoArchivo) (qvd);
next;
DROP Table Ultimos_3_Dias;
1 comentario:
este me funciona mas rapido
for each fileb in filelist('$(vRutaQVDsTransformed)\HOGARES*.QVD')
O:
LOAD
subfield('$(fileb)','\',10) as N,
FileTime('$(fileb)') as f
AutoGenerate(1);
next fileb;
MAXIM:
FIRST 1
LOAD N as Nombre,
f as fecha
Resident O
ORDER BY f dESC;
Publicar un comentario