Prova nel contesto della TrasposizioneHo uno script che esegue una trasposizione di alcuni dati ottenuti da una query SQL. Vorrei aggiungere un po' di tolleranza allo script, per cui le colonne esatte nella query possono variare. Il mio script attuale impone una serie di colonne che devono essere presenti affinché funzioni e vorrei applicare in qualche modo la funzionalità Try() per adattare la varianza nella query SQL.
Ho svolto un esercizio con la trasposizione inclusa in un'istruzione try, ma non ha funzionato.
Automazione e scriptingRe: Prova nel contesto della TrasposizioneCon quale parte hai problemi? Query SQL che fallisce perché i nomi delle colonne cambiano? O script JSL che fallisce perché non ottiene le colonne che si aspetta? Cosa dovrebbe succedere in caso di problemi?
Re: Prova nel contesto della TrasposizioneSQL estrae i dati come previsto, ma l'operatore potrebbe non includere tutte le colonne che JMP si aspetta di trasporre. Il problema si verifica quindi all'estremità JMP, dove le colonne esplicite vengono nominate ma risultano mancanti.
Il registro JMP indica
Colonna non trovata durante l'accesso o la valutazione di 'colonne', argomento non valido ({:SAMPLE}).
Re: Prova nel contesto della TrasposizioneE cosa si dovrebbe fare in quel caso? Interrompere l'esecuzione del programma? Saltare quella parte dello script? Tentare di ottenere le colonne corrette?
Re: Prova nel contesto della TrasposizioneVoglio eseguire solo le colonne che sono effettivamente apparse e non fallire a causa di quelle mancanti. In definitiva, ho bisogno di uno script che abbia un po' di tolleranza per le differenze nella query SQL, poiché molti operatori devono usarlo e le differenze si verificano. Un vantaggio che ho è che la colonna Transpose (:VALUE) e la colonna Label (:PARAMETER) hanno titoli fissi, ho approfondito un po' la questione con l'aiuto delle informazioni che ho trovato qui e altrove, ho ottenuto lo script qui sotto che sembra funzionare.
Risolto: rimuovere elementi in un elenco - JMP User Community
Grazie per l'aiuto.
dt = Current Data Table();
// List available columns
by_col_names = dt << get column names( "String" );
show(by_col_names);
// Remove Transpose and Label columns from list
delcols = {"VALUE", "PARAMETER"};
For( i = 1, i <= N Items( delcols ), i++,
Remove From( by_col_names, As List( Loc(by_col_names, delcols[i] ) ) );
);
// Transpose only if valid columns exist
If (N Items(by_col_names) > 0,
dt2 = dt << Transpose(
Columns(:VALUE),
By(
by_col_names
),
Label( :PARAMETER ),
Output Table( "Transpose of dt_data" )
);
);