Il filtro dati nello script JSL è lentoSto cercando di creare uno script JSL che utilizzi il filtro dati e selezioni circa 180 test di interesse nella colonna "ITEM_NAME" e crei una nuova tabella. Quando utilizzo il filtro dati e lo eseguo manualmente, non si verificano ritardi. Tuttavia, quando provo ad automatizzare il processo, ci vogliono circa 15 minuti per creare la nuova tabella. Cosa posso fare per renderlo più efficiente?
Open( "$DOCUMENTS/test.jmp" );
ref10 = Data Table( "ABC" ) << Select Where(
:ITEM_NAME == "test1" |
:ITEM_NAME == "test2" |
:ITEM_NAME =="test3" |
:ITEM_NAME ==
...
"test180"
) << Data View;
Data Table( ref10 ) << Save(
"$DOCUMENTS/filtered.jmp"
);
Automazione e scriptingRe: Il filtro dati nello script JSL è lentoProva questo
Open( "$DOCUMENTS/test.jmp" );
items={"test1" "test2""test3"..........};
ref10 = Data Table( "ABC" ) << Select Where(
contains(ITEMS) ) << Data View;
Data Table( ref10 ) << Save(
"$DOCUMENTS/filtered.jmp"
);
Re: Il filtro dati nello script JSL è lentoGrazie Jim. Per qualche motivo ricevo un errore (probabilmente dovuto alla sintassi).
Re: Il filtro dati nello script JSL è lentoSembra che ora funzioni più velocemente e ci sono voluti circa 3-4 minuti per completarlo, ma non altrettanto velocemente se lo facessi manualmente. Ho dovuto apportare una piccola modifica al codice per evitare l'errore:
Open( "$DOCUMENTS/test.jmp" );
items={"test1", "test2", "test3"..........};
ref10 = Data Table( "ABC" ) << Select Where(
contains(items, ITEM_NAME) ) << Data View;
Data Table( ref10 ) << Save(
"$DOCUMENTS/filtered.jmp"
);
Re: Il filtro dati nello script JSL è lentoErrore mio...era tardi la sera...
Re: Il filtro dati nello script JSL è lentoÈ un po' difficile capire perché il tuo script sia così lento senza vedere/comprendere i tuoi dati (non dovrebbe esserlo).
Potresti provare a usare << Ottieni righe dove e sottoinsieme invece di selezionare quelle righe. In questo esempio ho provato a replicare la vista dati utilizzando un sottoinsieme collegato e un nome di tabella di output senza titolo.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
items = {12, 13, 14, 15};
rows_of_interest = dt << get rows where(Contains(items, :age));
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Link to original data table(1), Output Table("Untitled"));
Re: Il filtro dati nello script JSL è lentoGrazie Jarmo. La tua soluzione ha ridotto il tempo di elaborazione a circa 1:35 secondi.
La tabella JMP che sto utilizzando ha 13 colonne e 13127825 dati raw. Il file di output ha 1274416 dati raw.
Re: Il filtro dati nello script JSL è lentoProbabilmente si potrebbero apportare delle ottimizzazioni, ma se quella velocità è sufficiente per la tua applicazione, non te ne preoccuperei.