2 de diciembre de 2014

Cargar ultimos 3 qvd

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

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;


1 comentario:

Andres Palacios Muñoz dijo...


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;