JMP 18 nuovo script di aggiornamento tabella sovrascrive la tabellaQuando importo tabelle Excel in JMP 18 ottengo due script, 'Source' e 'Update Table'; l'unica differenza sembra essere il comando 'Update Table (1)'.
Il secondo script esegue un aggiornamento dal file Excel e sovrascrive tutte le colonne create dopo l'importazione. C'è un modo per far sì che lasci intatte le nuove colonne durante l'aggiornamento? Non ho trovato nulla nello Scripting Index.
Automazione e scriptingOrganizzazione dei contenutiFinestreRe: JMP 18 il nuovo script di aggiornamento della tabella sovrascrive la tabellaCiao @Ake , l'idea dell'aggiornamento al momento è: sostituire i dati esistenti con i nuovi dati dal file di input.
Come hai descritto, questo è piuttosto distruttivo.
L'idea alla base potrebbe essere più o meno questa:
Non si può garantire che i valori esistenti nelle colonne aggiuntive corrispondano ai dati appena importati, quindi è meglio eliminarli. Hm, per le colonne con formule, non vedo alcun motivo per cui tali colonne debbano essere eliminate.
Molto meglio dello script di aggiornamento:
dt = Current Data Table();
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
Continuerà a eliminare i valori aggiunti manualmente, ma manterrà le colonne della formula : )
Lo svantaggio: si basa sullo script sorgente, che è anche molto fragile: Update & Concatenate: collisione dello script sorgente .
In alternativa, puoi dare un'occhiata a Join, Concat e Update .
Re: JMP 18 il nuovo script di aggiornamento della tabella sovrascrive la tabellaGrazie! Se copio semplicemente lo script sorgente nel tuo script diventa meno fragile.
Ho utilizzato un metodo più complicato, aggiungendo il numero richiesto di righe e poi aggiornando. Il tuo script è più pulito.
// Compare and add number of rows if needed
nrows1 = N Rows( dt1 );
nrows2 = N Rows( dt2 );
If( nrows2 < nrows1,
dt2 << Add Rows( nrows1 - nrows2 )
);
// Update dt2
Data Table( dt2 ) << Update( With( Data Table( dt1 ) ) );
Close( dt1 );
dt2 << save();
Re: Il nuovo script di aggiornamento della tabella JMP 18 sovrascrive la tabellail pericolo di questo script: viene ereditato tramite concatenazione:
utente A: importa un file Excel
utente B: concatena 2 file
utente C: si chiede se ci siano dati mancanti e prova "Aggiorna tabella"
da Disattivare lo script "Aggiorna tabella"?
per favore vota qui: Opzione per disabilitare la creazione dello script "Aggiorna tabella"
Re: Il nuovo script di aggiornamento della tabella JMP 18 sovrascrive la tabellaCiao, questa soluzione mi piace molto, ma ho una domanda: quando aggiorno una tabella con questo script, viene aggiunto automaticamente lo script generico di aggiornamento tabella, che può quindi danneggiare le colonne della formula. C'è un modo per disattivare la generazione automatica del nuovo script "Aggiorna tabella" aggiunto alla tabella jmp?
Re: Il nuovo script di aggiornamento della tabella JMP 18 sovrascrive la tabellaPuoi evitarlo eliminando o sovrascrivendo lo script "Aggiorna tabella" all'interno dello script. Ecco un modo, se il tuo script "Aggiorna tabella" personalizzato si chiama "Aggiorna tabella".
dt = Current Data Table();
update_script = dt << Get Script( "Update Table" );
dt << Delete Scripts( {"Update Table"} );
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
Eval(
Substitute(
Expr(
dt << Set Property( "Update Table", __update_script__ )
),
Expr( __update_script__ ), Name Expr( update_script )
)
);
In alternativa, puoi assegnare al tuo script un nome diverso ("Aggiorna") e includere semplicemente una riga che rimuova "Aggiorna tabella" dopo l'aggiornamento.
dt = Current Data Table();
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
dt << Delete Scripts( {"Update Table"} );