Mehrere Tabellen aus der Liste zusammenführenMit dem Skript hier kann ich eine Liste von Tabellen aus jedem Ordner abrufen. Ich möchte in der Lage sein, Tabellen aus der erstellten Liste zu verbinden. Ich möchte, dass der Benutzer auswählen kann, welche Tabellen er/sie verbinden kann, mit einer Voreinstellung, welche Spalten er/sie zum Verbinden verwenden möchte.
Path = Verzeichnis auswählen("Analytics-Datenverzeichnis auswählen");
Files_All = Dateien im Verzeichnis (Pfad);
NFS_All = N Items(Files_All);
Dateien = {};
//Nicht-Textdateien entfernen
Für (f=1, f < NFS_All+1, f++,
If(Contains(Files_All[f],".txt") > 0,
Einfügen in(Files,Files_All[f]);
);
);
//Aufforderung zur Auswahl einzelner Dateien
List_NPr = {};
List_Pr = Dateien;
PromptF = Neues Fenster("Dateiauswahl", << Modal,
V-Listenfeld(
Textfeld („Gewünschte Dateien auswählen“),
Textfeld(" "),
H-Listenfeld(
V-Listenfeld(
Textfeld("Zu verarbeitende Dateien:"),
Pr = List Box(List_Pr, width(350), nlines(30)),
Schaltflächenfeld(">>>> Ausgewählte entfernen >>>>",
List_NPr = concat(List_NPr, Pr << Get Selected);
List_Pr = remove(List_Pr, Pr << Ausgewählte Indizes abrufen);
Pr << Set Items(List_Pr);
NPr << Set Items(List_NPr);
)),
Textfeld(" "),
V-Listenfeld(
Textfeld("Ausgeschlossene Dateien:"),
NPr = List Box(List_NPr, width(350), nlines(30)),
Button Box("<<<< Ausgewählte hinzufügen <<<<",
List_Pr = concat(List_Pr, NPr << Get Selected);
List_NPr = remove(List_NPr, NPr << Ausgewählte Indizes abrufen);
Pr << Set Items(List_Pr);
NPr << Set Items(List_NPr);
)))));
warte(0);
Dateien = List_Pr;
NFS = N Elemente (Dateien);
);
Betreff: Mehrere Tabellen aus der Liste zusammenführenBitte markieren Sie Ihre Lösung als „Lösung“.Ich würde Ians auch als Lösung markieren.
Betreff: Mehrere Tabellen aus der Liste zusammenführenDanke!
Ich habe es tatsächlich herausgefunden.
Hier ist mein Gruß, falls es jemandem gefallen würde.
Clear Globals();
Clear Symbols();
Main Menu("Minimize All");
//Set text export preferences
//Preferences(Export Settings(Export Table Headers));
//Preferences(Export Settings(End of Field(Tab)));
//Initial prompt to select split level
Prompt = New Window ("Output Selection", <<MODAL> 0,
Insert Into(Files,Files_All[f]);
);
);
//Prompt to select individual files
List_NPr = {};
List_Pr = Files;
PromptF = New Window("File Selection", << Modal,
V List Box(
Text Box ("Select Desired Files"),
Text Box(" "),
H List Box(
V List Box(
Text Box("Files to join:"),
Pr = List Box(List_Pr, width(350), nlines(30)),
Button Box(">>>> Remove Selected >>>>",
List_NPr = concat(List_NPr, Pr << Get Selected);
List_Pr = remove(List_Pr, Pr << Get Selected Indices);
Pr << Set Items(List_Pr);
NPr << Set Items(List_NPr);
)),
Text Box(" "),
V List Box(
Text Box("Files Excluded:"),
NPr = List Box(List_NPr, width(350), nlines(30)),
Button Box("<<<< Add Selected <<<<",
List_Pr = concat(List_Pr, NPr << Get Selected);
List_NPr = remove(List_NPr, NPr << Get Selected Indices);
Pr << Set Items(List_Pr);
NPr << Set Items(List_NPr);
)))));
wait(0);
Files = List_Pr;
NFS = N Items(Files);
// table that others join
Fullpath = Path||Files[1];
DT_old = Open( Fullpath,private);
DT_old << Minimize Window;
//loop to join other tables
For (a=2, a < NFS+1, a++,
Fullpath = Path||Files[a];
DT_new = Open( Fullpath,private);
DT_new << Minimize Window;
join_name = "Limits" || char(a);
dt_old << join( with(data table(dt_new)),
Merge Same Name Columns,
By Matching Columns(
:A = :A,
:B = :B,
:C = :C,
),
Drop multiples( 1, 0 ),
Name( "Include non-matches" )(1, 1),
Output Table( join_name )
);
close(dt_old, nosave);
dt_old = data table(join_name);
);
</MODAL>Betreff: Mehrere Tabellen aus der Liste zusammenführenWas ist also Ihre Frage? Sie haben in der letzten Zeile Ihres Skripts eine überflüssige rechte Klammer und erfassen nicht die endgültige Liste.
Hier ist Ihr JSL geändert.FList enthält die vom Benutzer ausgewählten Dateien.Die letzte Zeile zeigt die endgültige Auswahl.Jetzt müssen Sie die Joins skripten.
Path = Pick Directory( "Select Analytics Data Directory" );
Files_All = Files In Directory( Path );
NFS_All = N Items( Files_All );
Files = {};
//Remove non-text files
For( f = 1, f < NFS_All + 1, f++,
If( Contains( Files_All[f], ".txt" ) > 0,
Insert Into( Files, Files_All[f] )
)
);
//Prompt to select individual files
List_NPr = {};
List_Pr = Files;
PromptF = New Window( "File Selection",
<<MODAL>>>> Remove Selected >>>>",
List_NPr = Concat( List_NPr, Pr << Get Selected );
List_Pr = Remove( List_Pr, Pr << Get Selected Indices );
Pr << Set Items( List_Pr );
NPr << Set Items( List_NPr );
FList = List_Pr;
)
),
Text Box( " " ),
V List Box(
Text Box( "Files Excluded:" ),
NPr = List Box( List_NPr, width( 350 ), nlines( 30 ) ),
Button Box( "<<<< Add Selected <<<<",
List_Pr = Concat( List_Pr, NPr << Get Selected );
List_NPr = Remove( List_NPr, NPr << Get Selected Indices );
Pr << Set Items( List_Pr );
NPr << Set Items( List_NPr );
FList = List_Pr;
)
)
)
)
);
Wait( 0 );
Files = List_Pr;
NFS = N Items( Files );
show(FList);</MODAL>