Dateien zusammenfassen und verkettenHallo!
Ich arbeite an großen Dateien, die viel Arbeitsspeicher des Computers beanspruchen, wenn ich auch nur eine einzige Datei öffne ... was dazu führt, dass mein PC träge ist und manchmal hängen bleibt. Ich habe mich gefragt, ob es eine jsl-Lösung gibt, bei der eine einzelne Datei vor dem Öffnen in kleinere Dateien aufgeteilt werden kann. Wie File_A = 2GB wird es in 4 kleinere Dateien mit jeweils 250 MB aufgeteilt. Ich werde dann das Öffnen und Aggregieren / Berechnen jeder einzelnen Datei automatisieren, die geöffnete Datei schließen und dann die Ergebnisse mit der nächsten Datei verketten, die verarbeitet werden soll .... dann geht die Schleife weiter.
Danke im Voraus.
Re: Dateien teilen und verkettenWenn Sie die Tabelle vor dem Aufteilen nicht in den Speicher laden möchten, können Sie kreativ sein, wie Sie die Daten laden. Bei flachen Dateien geben Sie die Startposition und die Anzahl der Zeilen an, die innerhalb einer Schleife gelesen werden sollen:
dtProbe = Open("$SAMPLE_DATA/Probe.jmp");
dtProbe << save( "$temp/deleteme123.txt" );
for( i = 1, i <= 2, i++,
dt = Open(
"$temp/deleteme123.txt",
columns(
New Column( "security to create", Character, "Nominal" ),
New Column( "resource", Character, "Nominal" ),
New Column( "group", Character, "Nominal" ),
New Column( "(ADM V-net)", Character, "Nominal" )
),
Import Settings(
Fixed Column Widths( 19, 9, 6, 105 ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 0 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 1 + 100 * (i - 1) ),
Lines To Read( 100 ),
Year Rule( "20xx" )
)
)
);Re: Dateien teilen und verketten @Nalla :
Ich möchte auch hinzufügen, dass dies nicht der einzige Ansatz ist, der die Verarbeitung dieser Daten beschleunigen kann. Wenn Sie die Tabelle "unsichtbar" oder "privat" machen, kann dies den Prozess erheblich beschleunigen.
dt << Show Window(0);
Re: Dateien teilen und verketten @Nalla :
Hallo, das kann sicherlich gemacht werden.
Schauen Sie sich die "Subset" -Funktion im Scripting Index an - dies hilft Ihnen, kleinere Subsets Ihrer großen Datentabelle zu bilden. Hier ist ein Beispiel . Sie können dann "Concat" verwenden, um sich der Tabelle anzuschließen.
// Lets start with the assumption that there are 1000 rows in dt table
// Also say you want to subset n rows in each iteration ;
LL = 1;
UL = 250 ;
for(i = 1 , i <= 4 , i ++,
LL = LL * i ;
UL = UL * i ;
dt << Select Rows(Index(LL,UL,1)); // Assuming "dt" is your master table
dt1 = dt << Subset("Private",Selected Rows(1),Selected Columns(0));<BR /> LL = UL;
);