unire più tabelle dalla listausando lo script qui posso ottenere un elenco di tabelle da qualsiasi cartella. Mi piacerebbe essere in grado di unire tabelle dalla lista creata. Voglio che l'utente sia in grado di scegliere a quali tabelle può unirsi con un preset di quali colonne utilizzare per unirsi.
Percorso = Scegli la directory ("Seleziona la directory dei dati di Analytics");
Files_All = File in Directory (Path);
NFS_All = N Items (Files_All);
File = {};
// Rimuovi i file non di testo
Per (f = 1, f If (Contains (Files_All [f], ". Txt")> 0,
Insert Into (Files, Files_All [f]);
);
);
// Richiedi di selezionare singoli file
List_NPr = {};
List_Pr = File;
PromptF = Nuova finestra ("Selezione file", << Modale,
V List Box (
Casella di testo ("Seleziona file desiderati"),
Casella di testo(" "),
H List Box (
V List Box (
Casella di testo ("File da elaborare:"),
Pr = List Box (List_Pr, width (350), nlines (30)),
Button Box (">>>> Rimuovi selezionati >>>>",
List_NPr = concat (List_NPr, Pr << Get Selected);
List_Pr = remove (List_Pr, Pr << Get Selected Indices);
Pr << Imposta elementi (List_Pr);
NPr << Imposta elementi (List_NPr);
)),
Casella di testo(" "),
V List Box (
Casella di testo ("File esclusi:"),
NPr = List Box (List_NPr, width (350), nlines (30)),
Button Box ("<<<< Aggiungi Selezionato <<<<",
List_Pr = concat (List_Pr, NPr << Get Selected);
List_NPr = remove (List_NPr, NPr << Get Selected Indices);
Pr << Imposta elementi (List_Pr);
NPr << Imposta elementi (List_NPr);
)))));
attendere (0);
Files = List_Pr;
NFS = N Items (Files);
);
Ri: unire più tabelle dalla listaquindi qual è la tua domanda? Hai una parentesi tesa estranea nell'ultima riga del tuo script e non stai catturando l'elenco finale.
Ecco la tua JSL modificata. FList contiene i file selezionati dall'utente. L'ultima riga mostra le selezioni finali. Ora devi scrivere i join.
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>Ri: unire più tabelle dalla listagrazie!
in realtà l'ho capito.
ecco il mio salutare se a qualcuno piacesse.
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>Ri: unire più tabelle dalla listaSi prega di contrassegnare la soluzione come una "Soluzione". Segnerei anche Ian come soluzione.