Qlik Community

Chile

Announcements
QlikWorld 2022, LIVE in Denver CO., May 16-19, 2022. REGISTER NOW TO RECEIVE EARLY BIRD PRICING
cancel
Showing results for 
Search instead for 
Did you mean: 
Gonzalo_Adaro
Contributor
Contributor

Qlik sense - Carga de ultimo archivo subido

Buenas tardes comunidad, junto con saludar y esperando que se encuentren bien, quisiera saber si me pueden ayudar con el siguiente inconveniente. 

Al servidor de Qlik se suben distintos archivos los cuales en su nombre contienen el año, mes, día, hora, minutos y segundos la cual fueron subidos de la siguiente manera, /YYYYMMDDhhmmss_nombre_del_archivo.txt

El tema, es que para uno de mis requerimientos, necesito solo cargar el ultimo archivo que fue subido, es decir podría buscar por el nombre de archivo la fecha más actual. He obtenido el nombre con la función Left(FileBaseName(), 14) as nombredelarchivo. Hasta ahí todo bien, el problema es cómo hago para identificar la fecha más actual e insertarla en el script para cargar solo dicho archivo.

Por otro lado, funciones como Filetime() no me sirven, ya que en algún momento se puede actualizar algún archivo antiguo y la fecha que retorna dicha función será del archivo antiguo modificado. 

Cualquier ayuda se los agradecería. 

 

1 Solution

Accepted Solutions
QFabian
Specialist II
Specialist II

Hola!  @Gonzalo_Adaro , gusto en saludarte, por favor prueba el siguiente script.

//Primero se usa la rutina tipica que tiene Qlik para leer los archivos de una carpeta.

sub DoDir (Root)
for each File in filelist (Root&'\*.txt')
Archivo:
LOAD

// Aquí el truco es extraer solo la parte numérica, que sirve automáticamente para traer un valor máximo

// 32 caracteres, ya que son los 8 de la fecha , 6 de la hora mas el nombre que les puse a los archivos
subfield(right('$(File)',32), '_', 1) as Id_Archivo, '$(File)' as Archivo
autogenerate 1;

next File


end sub

// Ojo aquí cree una lib apuntando a una carpeta con 3 archivos

call DoDir ('lib://Archivos (fabian_fabian)') //C:\Users\Fabian\Desktop\archivos

//Aquí trae el máximo valor, como es fecha y hora, y viene así en el nombre del archivo, se facilita la lectura
Id_Archivo:
Load
max(Id_Archivo) as Id_Archivo
Resident Archivo;

vArchivo = peek('Id_Archivo',0, 'Id_Archivo'); //Asigno el valor máximo a una variable

drop table Id_Archivo, Archivo; //borro tablas temporales

//Cargo el archivo con la fecha y hora máxima!, usando la variable

Archivo:
LOAD
FileBaseName() as Archivo,
@1
FROM [lib://Archivos (fabian_fabian)/$(vArchivo)_transacciones.txt]
(txt, utf8, no labels, delimiter is '\t', msq);

 

QFabian

View solution in original post

2 Replies
QFabian
Specialist II
Specialist II

Hola!  @Gonzalo_Adaro , gusto en saludarte, por favor prueba el siguiente script.

//Primero se usa la rutina tipica que tiene Qlik para leer los archivos de una carpeta.

sub DoDir (Root)
for each File in filelist (Root&'\*.txt')
Archivo:
LOAD

// Aquí el truco es extraer solo la parte numérica, que sirve automáticamente para traer un valor máximo

// 32 caracteres, ya que son los 8 de la fecha , 6 de la hora mas el nombre que les puse a los archivos
subfield(right('$(File)',32), '_', 1) as Id_Archivo, '$(File)' as Archivo
autogenerate 1;

next File


end sub

// Ojo aquí cree una lib apuntando a una carpeta con 3 archivos

call DoDir ('lib://Archivos (fabian_fabian)') //C:\Users\Fabian\Desktop\archivos

//Aquí trae el máximo valor, como es fecha y hora, y viene así en el nombre del archivo, se facilita la lectura
Id_Archivo:
Load
max(Id_Archivo) as Id_Archivo
Resident Archivo;

vArchivo = peek('Id_Archivo',0, 'Id_Archivo'); //Asigno el valor máximo a una variable

drop table Id_Archivo, Archivo; //borro tablas temporales

//Cargo el archivo con la fecha y hora máxima!, usando la variable

Archivo:
LOAD
FileBaseName() as Archivo,
@1
FROM [lib://Archivos (fabian_fabian)/$(vArchivo)_transacciones.txt]
(txt, utf8, no labels, delimiter is '\t', msq);

 

QFabian

View solution in original post

Gonzalo_Adaro
Contributor
Contributor
Author

Un verdadero Crack, muchas gracias Fabian.

Espero seguir aprendiendo como tu y ser un aporte igual para la comunidad. 

Saludos!