Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola expertos
Tengo que realizar una extracción de datos de los 3 últimos periodos.
Los datos origen tienen cada periodo con el mismo nombre
_Clientes_Gral_S29_201904.txt
_Clientes_Gral_S29_201903.txt
_Clientes_Gral_S29_201902.txt
_Clientes_Gral_S29_201901.txt
Actualmente se están levantando los todos los periodos _Clientes_Gral_S29_*.txt y en la app solamente levantando los 3 últimos periodos a partir de la fecha de hoy.
La idea es ver como poder levantar solamente los últimos 3 periodos (3 meses) solamente y no levantar todos los meses ya que ocuparía mucho espacio y tiempo de QVDs
Desde ya gracias
Hola, la variable vFile no hace falta definirla.
Tienes dos variables que deberían ser la misma: vRutaInfoExterna y vRutaFicheros.
Lo mismo para vPeriodo1 y vFirstPeriod.
Al from seguramente le faltará algo más: "(biff, no labels, table is Sheet1$)", "(txt, codepage is 28591, no labels, delimiter is '\t', msq)"... algo que defina el formato del fichero y como leerlo, por ejemplo:
FROM [$(vFile)] (biff, no labels, table is Sheet1$) ;
Gracias Ruben , voy a tener en cuenta de escribir en el chat correcto .
Respecto al script lo pruebo y te comento
Desde ya gracias
Hola Ruben , lo he probado y no me funciono. Te paso el script como lo estoy modificando, la variable vFile veo q no estas definida.
SET vRutaInfoExterna = \\srvapwb12\SCG_INFORMACION_EXTERNA$\;
LET vPeriodo1 = NUM#(DATE(AddMonths(Today(),-3),'YYYYMM'));
FOR EACH vFile IN FILELIST ('$(vRutaFicheros)USUARIOS\SALIDAS GENERALES\Cliente_360-Archivos Salida\_Clientes_Gral_S29_*.txt')
LET vFilePeriod = RIGHT(LEFT('$(vFile)', INDEX('$(vFile)', '.')-1),6);
IF $(vFilePeriod) >= $(vFirstPeriod) THEN
Clientes_Gral_TablaOrigen:
LOAD
BPCLIENT ,
SUCURSAL ,
TIPOPERN ,
TIPOPERD ,
APEYNOMB ,
NRODEDOC ,
TDOCSIBA ,
CUITCLIE ,
ESTCIVIL
FROM [$(vFile)] ;
ENDIF
NEXT
STORE * FROM Clientes_Gral_TablaOrigen INTO $(vRutaQVD)\CLIXXX_Cliente360_Total.qvd (qvd);
Desde ya gracias
Hola, la variable vFile no hace falta definirla.
Tienes dos variables que deberían ser la misma: vRutaInfoExterna y vRutaFicheros.
Lo mismo para vPeriodo1 y vFirstPeriod.
Al from seguramente le faltará algo más: "(biff, no labels, table is Sheet1$)", "(txt, codepage is 28591, no labels, delimiter is '\t', msq)"... algo que defina el formato del fichero y como leerlo, por ejemplo:
FROM [$(vFile)] (biff, no labels, table is Sheet1$) ;
Hola Ruben ,
Ahora quedo perfecto tomando los 3 últimos periodos correctamente.
Copio el script completo para que quede como referencia para la comunidad
SET vRutaInfoExterna = \\srvapwb12\SCG_INFORMACION_EXTERNA$\;
LET vPeriodo3 = NUM#(DATE(AddMonths(Today(),-3),'YYYYMM'));
FOR EACH vFile IN FILELIST ('$(vRutaInfoExterna)USUARIOS\SALIDAS GENERALES\Cliente_360-Archivos Salida\_Clientes_Gral_S29_*.txt')
LET vFilePeriod = RIGHT(LEFT('$(vFile)', INDEX('$(vFile)', '.')-1),6);
IF $(vFilePeriod) >= $(vPeriodo3) THEN
Clientes_Gral_TablaOrigen:
LOAD
BPCLIENT ,
SUCURSAL ,
TIPOPERN ,
TIPOPERD ......
......
FROM $(vFile)
(txt, codepage is 1252, embedded labels, delimiter is '|', msq) ;
ENDIF
NEXT
STORE * FROM Clientes_Gral_TablaOrigen INTO $(vRutaQVD)\CLIXXX_Cliente360_Total.qvd (qvd);
Gracias por la ayuda y la velocidad de respuesta.
Slds
Hola
Ahora tengo otra consulta ya q necesito leer cual es el ultimo file q tengo cargado en un directorio.En este caso tengo
_Clientes_Gral_S29_201904.txt
_Clientes_Gral_S29_201903.txt
_Clientes_Gral_S29_201902.txt
etc
La idea es poder saber cual es el ultimo file en el directorio (en este caso el 201904) como para saber q a partir de ahi puedo levantar los 3 ultimos peridos.
Desde ya gracias
Gracias Ruben funciona correctamente.
Por otro lado tenes algun link o pdf donde pueda profundizar mas con temas de scripting ?
Porque estoy viendo varios papers pero no son tan profundos para hacer script . Actualmente estoy leyendo Qlikview Scripting pero quisiera algo mas profundo me podrias recomendar algo ?
Desde ya gracias
Slds
Carlos