Öffnen Sie mehrere DateienIch möchte mehrere Messdateien öffnen und sie zu einer einzigen Datei verketten.
Aufgrund des seltsamen Headers der Dateien ist die Verwendung leider nicht einfach Mehrere Dateien importieren ...
Also richte ich eine for-Schleife ein und lade jede Datei über open() ..., verarbeite sie einzeln und verkette sie dann.
Es ist erstaunlich, wie viel langsamer for( open(...)) im Vergleich zu MFI ist.
Einige Tricks, die ich ausprobiert habe:
- Alle Dateien laden, einmal verketten -> hilft
- Option „unsichtbar“ (um Tabellenaktualisierungen zu entfernen) -> hilft sehr
aber immer noch keine Chance, die Leistung von MFI zu erreichen.
Irgendwelche weiteren Tricks?
Es sollte hilfreich sein, MFI (ohne Stapelung) zu verwenden, die Datentabellen dann separat zu verarbeiten und zu verketten.
Gibt es einen Befehl, der MFI anweist, die Dateien zu öffnen? unsichtbar ?
DatenzugriffBetreff: Mehrere Dateien öffnen- Scheint einige gute Wunschlistenelemente zu sein: eine aggressivere Verkettungsoption, eine unsichtbare Option.
- Versuchen Sie, die Tabellen zu minimieren
- Versuchen Sie es mit <
- MFI verfügt außerdem über einen schnelleren CSV-Reader als open(). Die Verwendung von open kann jedoch immer noch schnell sein, wenn Sie das Quellskript verwenden können, das genügend Informationen angibt, um einen zusätzlichen Scan der Daten zu verhindern. Oder versuchen Sie, mit MFI eine einzelne Datei zu importieren.
- MFI verwendet mehrere Threads. Wenn Sie Minuten (nicht Sekunden) betrachten, Kann JMP JMP ausführen?könnte das sein, was Sie benötigen, um mehr als ein open() gleichzeitig auszuführen. Es ist nicht klar, ob sich die Zeit, die Sie damit verbringen, es zum Laufen zu bringen, jemals auszahlen würde, und es wäre ein Albtraum, es für jemand anderen aufrechtzuerhalten.
Betreff: Mehrere Dateien öffnenIch habe ein Add-In geschrieben, das dies mit einigen anderen Optionen erledigt und ausschließlich auf der Leistungsfähigkeit von MFI basiert. Ich habe es nicht in der Community geteilt, da ich einige unternehmensspezifische Elemente daraus entfernen muss. Das könnte mich dazu anspornen, das zu teilen, was ich im Laufe der Jahre gelernt habe 
Wie auch immer, Sie können MFI verwenden und ich erstelle im Grunde eine Liste der Dateinamen (über Datei oder Dateien im Verzeichnis auswählen), sodass ich einen einzelnen Pfad und eine Liste von Dateinamen für diesen Pfad habe, und übergebe sie dann an MFI-Befehl.
Dann überprüfe ich die Ausgabe und erzwinge die Verkettung, wenn es sich um mehr als eine Datei handelt. Hier ist ein Ausschnitt
filter = ConcatItems(fileList,";");
filesImported1 = Multiple File Import(
<<SET folder=""></SET>
Filter ist im Grunde die Liste der Dateinamen, jedoch getrennt durch „;“
Betreff: Mehrere Dateien öffnenSo etwas könnte funktionieren.
// 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 upaufgeräumt
Jetzt müssen Sie entscheiden, welche Spalten numerisch sind ...
Betreff: Mehrere Dateien öffnenHallo @nathan-clark .
danke für den Ausschnitt.
Zum hier besprochenen Anwendungsfall: Bevor die Dateien zusammengeführt werden können, ist eine gewisse Vorverarbeitung auf Dateiebene erforderlich.
Daher würde ich es vorziehen, die Dateien mit der Option zu laden
<<SET stack="" mode=""></SET>
Auf meinem System (Jmp 17.1) beginnt Jmp mit der Anzeige der über 100 Tabellen Vor es reagiert auf die
<< show window(0);
Dies war der Grund für:
@hogi schrieb:Gibt es einen Befehl, der MFI anweist, die Dateien zu öffnen? unsichtbar ?
Betreff: Mehrere Dateien öffnenOk, das macht mehr Sinn. Ich verstehe, worauf du hinaus willst...
Das Einzige, was es etwas schneller macht, ist, wenn Sie die Dateien privat statt unsichtbar öffnen. Es ist ein ziemlich schnelles Upgrade. Ich bin mir allerdings nicht sicher, ob es mit der Geschwindigkeit von MFI mithalten kann. Ich habe festgestellt, dass JMP selbst im privaten Zustand die meisten Operationen an den Dateien ausführen kann und den RAM-Bedarf drastisch reduziert. Sie müssen beim Testen nur „privat“ auskommentieren, sonst suchen Sie am Ende nach Testtabellen, die Sie nicht sehen können 
Hoffentlich kann JMP MFI noch weiter verbessern.
Betreff: Mehrere Dateien öffnen@nathan-clark , vielen Dank, der Privatgelände macht es ungefähr Faktor 2 schneller 
@nathan-clark schrieb:Hoffentlich kann JMP MFI noch weiter verbessern.
Ja, ein unsichtbar (oder sogar private!) Option in MFI
https://community.jmp.com/t5/JMP-Wish-List/Private-option-for-Import-Multiple-Files/idc-p/632087#M42...
wird ein GameChanger sein!
Genug Optionen für mich:
- Nutzen Sie den Privatmodus im Open und machen Sie ein kurzes Nickerchen
- Überprüfen Sie, ob es mir gelingt, mich anzupassen @Craige_Hales Unten finden Sie die Lösung für unseren Dateityp.
- warte auf das unsichtbar Option in Jmp 18 
Betreff: Mehrere Dateien öffnenDanke @Craige_Hales - viele wirklich gute Ideen zum Nachmachen!
Leider ist das
// transfer data from text to unique cols.<BR />...
ist ziemlich langsam...
hier ein Beispiel – auf meinem System dauert das Laden der Daten eine Sekunde und die Konvertierung der Daten 10 Sekunden ...
Mehr sehen...
Betreff: Mehrere Dateien öffnenGuter Fang, die Einrichtung für die Matrixspalten der Datentabelle ist ziemlich steil. Auf diese Weise wird ein Setup für alle 40 Zeilen anstelle eines Setups für jede Zeile verwendet. (siehe die Temp Liste.) Ich sehe ~4X besser für den Testfall der großen Klasse:
// 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;
Betreff: Mehrere Dateien öffnenWie wäre es damit:
- Nutzen Sie den ultraschnellen MFI-Import (mit CSV-Option)
- Trennen Sie die Eingabedateien über Subset(private)
- Verarbeiten Sie die Daten nach, um aussagekräftige Spaltennamen zu erhalten [hier nur eine Verschiebung]
- die Dateien verketten
// 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>
Betreff: Mehrere Dateien öffnenWas für eine Verbesserung durch das Sammeln der Daten in einer temporären Liste – und das Blockschreiben in die Datentabelle!
Hübsch!
Danke @Craige_Hales
Betreff: Mehrere Dateien öffnenBeim Schreiben des Beitrags zur Wunschliste habe ich verwandte Wünsche gefunden – und dort Links hinzugefügt:
Unsichtbar: Es besteht bereits der Wunsch, die Dateien mit zu öffnen Privatgelände Option (ab 2022):
Private Option zum Importieren mehrerer Dateien
aggressive Verkettung (ab 2020):
Import mehrerer Dateien – Kombination erzwingen
Mit etwas Glück sind sie also bereits in der nächsten Version von Jmp implementiert 