Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Import
Creator
Creator

Formato de Archivos.

Buen día Estimados.

Quisiera saber si alguien conoce una forma en la que se pueda capturar el formato del archivo antes desde su lectura. Me explico: Tengo demasiados archivos que debo cargar de forma seguida, el lío es que a pesar que contienen la misma estructura no tienen el mismo formato, es decir que unos archivos llegan con el formato (biff, embedded labels); y otros llegan con el formato (txt, unicode, embedded labels, delimiter is '\t', msq); y al realizar la recarga de los archivos me sale un error que no me deja continuar con la carga.

Si hubiera una forma de capturar este formato por archivo leido, podría asociarlos y cargar la información, pero no sé como puedo capturar este formato.

Si alguien conoce una solución alterna o puede indicarme como capturar el formato, le agradesería mucho.

Saludos

1 Solution

Accepted Solutions
davidrobles
Partner - Contributor III
Partner - Contributor III

Hola, puedes crear dos bucles cada uno con el formato y usar definir el errormode a cero, creo recordar, para que ignore los errores.

View solution in original post

7 Replies
sacosta5
Contributor III
Contributor III

Hola Juan,

creo que podría servirte utilizar  la función FileExtension.

FileExtension - script function ‒ QlikView

La otra opción que se me ocurre es separar en carpetas según las extensiones de los archivos y realizar varias cargas ya sea en una misma tabla o diferentes.

Espero que sea útil.

Saludos

hector_munoz
Specialist
Specialist

Hola Juan,

Cuando dices que los ficheros tienen la misma estructura entiendo que significa que los ficheros tienen la misma cabecera de la tabla que contienen y que únicamente cambia el separador (si es un fichero de texto) o la extensión.

Si es así, lo que puedes hacer es iterar por el listado de ficheros que tengas en la carpeta o carpetas y en cada iteración almacenar en una variable la extensión (con la función que te indica Silvia) y en otras el número de veces que en el primer registro aparece cada uno de los separadores de tu casuística. Luego, en función del tipo del fichero y del tipo del separador asignas a una variable final los parámetros de lectura del fichero:

SET vsParamXLSX  = '(ooxml, embedded labels)';

SET vsParamXLS    = '(biff, embedded labels)';

SET vsParamTXT_Tab = '(txt, unicode, embedded labels, delimiter is '\t', msq)';

SET vsParamTXT_Pipe = '(txt, unicode, embedded labels, delimiter is '|', msq)';

SET vsParam = If(..., '$(vsParamXLSX  )', If(..., ..., '$(vsParamTXT_Pipe )'))

Finalmente:

TABLA:
LOAD     *

FROM     $(vsFile) $(vsParam);

Espero que te sirva.

Saludos,

H

Import
Creator
Creator
Author

Hola Silvia, gracias por tu respuesta.

Esta función lo que hace es que me trae si el archivo es .xls o .txt pero lo que requiero no es la extensión del archivo, si no el formato de carga (lo que viene bajo el FROM en paréntesis), ya que la dificultad radica es en ese formato.

Import
Creator
Creator
Author

Hola Hector.

Que pena contigo pero creo que no te entiendo bien la condición que usas en la última variable.

Lo que dices es correcto, las columnas siempre son las mismas, lo que no es igual es el formato del archivo hay archivos que se descargan con formato (biff, embedded labels); y otros que vienen con formato (txt, unicode, embedded labels, delimiter is '\t', msq); a pesar de tener la extensión .xls. Este formato es el que quiero capturar para así poder colocar una fórmula LET que me permita asignar el formato requerido a cada archivo de acuerdo al nombre (que por cierto es una fecha).

Esta es una imagen de como se ve en el editor de script. Podrás ver que la extensión es .xls para ambos pero el formato es diferente en los dos

Captura.PNG

Tu condición me suena pero no la entiendo, si me pudieras dar un ejemplo te lo agradecería.

Quedo atento a tus comentarios.

Saludos

Juan Gómez

davidrobles
Partner - Contributor III
Partner - Contributor III

Hola, puedes crear dos bucles cada uno con el formato y usar definir el errormode a cero, creo recordar, para que ignore los errores.

Import
Creator
Creator
Author

Gracias David, eso fue exactamente lo que hice.

Saludos

Import
Creator
Creator
Author

gracias Hector.

A la final lo que hice fue usar la variable de error y así cargar todos los archivos