Abrir varios archivosQuiero abrir varios archivos de medidas y concatenarlos en un solo archivo.
Desafortunadamente, debido al extraño encabezado de los archivos, no es fácil de usar. Importar varios archivos...
Entonces, configuré un bucle for y cargué cada archivo a través de open() ..., lo procesé uno por uno y luego los concatené.
Es sorprendente lo mucho más lento que es (open(...)) en comparación con MFI.
Algunos trucos que probé:
- cargar todos los archivos, concatenar una vez --> ayuda
- opción "invisible" (para deshacerse de las actualizaciones de la tabla) --> ayuda mucho
pero aún así, no hay posibilidad de alcanzar el rendimiento de la IMF.
¿Algún truco más?
Debería ayudar usar MFI (sin apilar), procesar las tablas de datos por separado y luego concatenarlas.
¿Hay un comando para decirle a MFI que abra los archivos? invisible ?
Acceso a los datosRe: Abrir varios archivos- Parecen algunos buenos elementos de la lista de deseos: una opción de concatenación más agresiva, una opción invisible.
- intenta minimizar las tablas
- intente <
- MFI también tiene un lector CSV más rápido que el que usa open(). Pero usar open aún puede ser rápido si puede usar el script de origen que especifica suficiente información para evitar un escaneo adicional de los datos. O intente usar MFI para importar un solo archivo.
- MFI utiliza varios subprocesos. Si está mirando minutos de tiempo (no segundos), ¿JMP puede ejecutar JMP?podría ser lo que necesita para ejecutar más de un open() a la vez. No está claro que el tiempo que dedica a hacer que funcione alguna vez se devuelva, y es una pesadilla mantenerlo para otra persona.
Re: Abrir varios archivosHe escrito un complemento que hace esto con algunas otras opciones y funciona únicamente con el poder de MFI. No lo he compartido en la comunidad porque necesito eliminar algunos elementos específicos de la empresa. Esto puede estimular a compartir lo que he aprendido a lo largo de los años 
De todos modos, puede usar MFI y lo que hago es básicamente crear una lista de los nombres de los archivos (a través de un archivo de selección o archivos en el directorio), así que tengo una ruta única y una lista de nombres de archivos para esa ruta, y luego los paso al Comando IMF.
Luego verifico la salida y si es más de 1 archivo forzaré la concatenación. Aquí hay un fragmento
filter = ConcatItems(fileList,";");
filesImported1 = Multiple File Import(
<<SET folder=""></SET>
filter es básicamente la lista de nombres de archivos, pero separados por ";"
Re: Abrir varios archivosAlgo como esto podría funcionar.
// use MFI to stack a mixed bag of tables...
// assumes "text" and "file name" are not columns in the data AND assumes
// no commas in the data values. Not sure how you would work around that.
dir = "$temp/testfiles/"; // make sample files here
Delete Directory( dir );
Create Directory( dir );
Save Text File( dir || "a.csv", "a,b,c\!n1,2,3\!n-1,-2,-3" );
Save Text File( dir || "b.csv", "junk\!nc,b,a,e\!n3,4,5,98\!n-1,-2,-3,-4" );
Save Text File( dir || "c.csv", "junk\!njunk\!nb,d,a,c\!n6,99,7,8\!n-1,-2,-3,-4" );
dtList = Multiple File Import(
<<SET folder=""></SET>
cleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned upcleaned uplimpiado
Ahora tendrás que decidir qué columnas son numéricas...
Re: Abrir varios archivosHola @nathan-clark .
gracias por el fragmento.
Con respecto al caso de aplicación discutido aquí, es necesario algún proceso previo a nivel de archivo antes de que los archivos puedan fusionarse.
Por lo tanto, preferiría cargar los archivos con la opción
<<SET stack="" mode=""></SET>
En mi sistema (Jmp 17.1), Jmp comienza a mostrar más de 100 tablas antes reacciona en el
<< show window(0);
Este fue el motivo de:
@hogi escribió:¿Hay un comando para decirle a MFI que abra los archivos? invisible ?
Re: Abrir varios archivosBien, eso tiene más sentido. Veo a lo que te refieres...
Lo único que lo hará un poco más rápido es si abre los archivos de forma privada en lugar de invisible. Es una actualización bastante rápida... aunque no estoy seguro de si coincidirá con la velocidad de MFI. Descubrí que incluso cuando es privado, JMP puede realizar la mayoría de las operaciones en los archivos y reduce drásticamente las necesidades de RAM ... solo necesita comentar en privado cuando realiza la prueba o termina buscando tablas de prueba que no puede ver 
Esperemos que JMP pueda mejorar MFI aún más.
Re: Abrir varios archivos@nathan-clark , muchas gracias, el privado hace que sea aproximadamente un factor 2 más rápido 
@nathan-clark escribió:Esperemos que JMP pueda mejorar MFI aún más.
si, un invisible (¡o incluso privado!) Opción en MFI
https://community.jmp.com/t5/JMP-Wish-List/Private-option-for-Import-Multiple-Files/idc-p/632087#M42...
será un GameChanger!
Suficientes opciones para mí:
- usa el modo privado en Abierto y toma una siesta corta
- comprobar si logro adaptarme @Craige_Hales La solución de abajo para nuestro tipo de archivo.
- esperen al invisible opción en Jmp 18 
Re: Abrir varios archivosGracias @Craige_Hales - ¡Muchas ideas realmente buenas para copiar!
Desafortunadamente, el
// transfer data from text to unique cols.<BR />...
es bastante lento...
aquí un ejemplo: en mi sistema se tarda un segundo en cargar los datos y 10 segundos en convertir los datos...
Ver más...
Re: Abrir varios archivosBuena captura, la configuración de las columnas de la matriz de la tabla de datos es bastante complicada. De esta forma, se usa una configuración para las 40 filas en lugar de una para cada fila. (ver el temperatura list.) Veo ~ 4 veces mejor para el caso de prueba de clase grande:
// use MFI to stack a mixed bag of tables...
// assumes "text" and "file name" are not columns in the data AND assumes
// no commas in the data values. Not sure how you would work around that.
dir = "$temp/testfiles/"; // make sample files here
Open( dir );
Delete Directory( dir );
Create Directory( dir );
dt0 = Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each( {i, idx}, 1 :: 300,
dt0:height[1] = 1000 + i;
dt0 << Save( dir || Char( 1000+i ) || ".csv" );
);
t1 = HP Time();
dtList = Multiple File Import(
<<SET folder=""></SET>
(t2 - t1) / 1000000 = 2,105032;
(t3 - t2) / 1000000 = 2,65675;
Re: Abrir varios archivosQué tal esto:
- use la importación ultrarrápida de MFI (con la opción csv)
- separar los archivos de entrada a través de Subconjunto (privado)
- postprocesar los datos para obtener nombres de columna significativos [aquí solo un movimiento hacia arriba]
- concatenar los archivos
// use MFI to stack a mixed bag of tables...
// assumes "text" and "file name" are not columns in the data AND assumes
// no commas in the data values. Not sure how you would work around that.
// then splits the data via Subset(private)
// ... some postprocessing ...
// and then concatenate the files
dir = "$temp/testfiles/"; // make sample files here
open(dir);
Delete Directory( dir );
Create Directory( dir );
dt0 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Foreach ({i,idx},1::300,
dt0 << Save( dir || char(i)||".csv" ));
t1=HPtime();
dtList = (Multiple File Import(
<<SET folder=""></SET>
Re: Abrir varios archivos¡Qué mejora al recopilar los datos en una lista temporal y escribir bloques en la tabla de datos!
¡lindo!
gracias @Craige_Hales
Re: Abrir varios archivosMientras escribía la publicación para la lista de deseos, encontré deseos relacionados y agregué enlaces allí:
Invisible: ya existe el deseo de abrir los archivos con privado opción (a partir de 2022):
Opción privada para importar varios archivos
concatenación agresiva (a partir de 2020):
Importación de varios archivos - Forzar combinación
Entonces, con un poco de suerte, ya están implementados en la próxima versión de Jmp 