Lo script viene eseguito in modo diverso su un altro computer?Il seguente scenario: ho un collega all'estero per il quale ho scritto una sceneggiatura. È uno script che carica i dati da un database, li organizza in una tabella e inserisce nella tabella uno script di tabella per i grafici di controllo. La tabella contiene alcuni prodotti/processi diversi e questo script di tabella è mirato solo a uno di essi (ovvero, una piccola frazione di tutte le righe). Quando eseguo gli script principale e quello della tabella sul mio computer, funzionano magnificamente. Quando il mio collega all'estero li esegue (e l'ho visto sul suo schermo durante una conferenza telefonica), ottiene la tabella dal database e lo script della tabella viene eseguito ma fallisce selvaggiamente per quanto riguarda la selezione della riga che dovrebbe rappresentare nel carta di controllo. Utilizza centinaia, se non migliaia di righe irrilevanti dal sottoinsieme sbagliato.
Nello script della tabella non utilizzo "Names Default To Here (1);". Il mio collega ha installato una versione diversa di JMP (17.0 contro 17.2.) che non mi aspettavo avrebbe avuto importanza. Come prima risposta, ho inviato una copia delle mie preferenze esportate utilizzando il Gestore preferenze (con importazione/esportazione) , il che non ha aiutato la risoluzione.
Poi mi ha inviato una copia della sua tabella e quando ho esaminato lo script della tabella al suo interno, ho scoperto una piccola differenza rispetto all'aspetto dello script della tabella quando eseguo lo script dall'alto sul mio computer:
Sul mio computer:

Sul computer dei miei colleghi:

Tuttavia, quando ho eseguito lo script della tabella (ovvero la versione in basso) nella copia della tabella che aveva generato e inviato via e-mail sul mio computer, lo script della tabella è stato eseguito esattamente come previsto. Ahimè, non so assolutamente cosa sta succedendo qui.
Cosa potrebbe esserci alla base di tutto ciò, come possiamo risolverlo ed evitare questo problema in futuro? Qualche buona pratica? Grazie!
Automazione e scriptingRi: Lo script viene eseguito in modo diverso su un altro computer?Possono sicuramente esserci differenze tra le versioni di manutenzione di JMP che potrebbero causare ogni sorta di differenze/problemi.
Lo script funziona correttamente per il tuo collega se separa lo script dallo script della tabella, aggiunge Names Default To Here(1) all'inizio dello script e lo esegue da una finestra di script separata?
Ri: Lo script viene eseguito in modo diverso su un altro computer?-le differenze nel formato dei dati locali possono davvero rovinare una query. (questo potrebbe essere determinato localmente dal sistema operativo)
-le differenze di versione poiché circa la v14 raramente causano problemi.
-Se disponi di una connessione al database e al computer più recente e più veloce e il tuo college ha un computer molto lento e una cattiva connessione di rete al database, questo potrebbe essere un problema. (potrebbe essere necessario aggiungere un po' di wait(); o dt<
Ri: Lo script viene eseguito in modo diverso su un altro computer?
è causato dai messaggi di oggetto sconosciuto a colori:

in generale l'impostazione è molto utile, se si accetta che anche alcuni "conosciuti" vengano colorati.
Lo svantaggio dei messaggi "sconosciuti": non è possibile aprire l'indice di Scripting tramite

Ri: Lo script viene eseguito in modo diverso su un altro computer?@jthi , il problema è lo stesso quando ho chiesto al mio collega estero di seguire la procedura diagnostica che hai proposto.
@Byron_JMP , proprio come lo vedo durante le nostre videoconferenze, lo script iniziale viene eseguito all'incirca alla stessa velocità della mia posizione. Immagino anche che i laptop della nostra azienda abbiano tutti specifiche relativamente simili. Ciò che crea confusione è che quando il mio collega mi invia tramite e-mail la tabella iniziale che ha ottenuto dal primo script o script "principale" e io eseguo lo script della tabella al suo interno, fa proprio quello che mi aspetto che faccia. Quindi forse la velocità della linea non è il problema
@hogi Non ho attivato questa impostazione, quindi nel mio caso (e ho preso gli screenshot sul mio computer dalla mia installazione JMP) sembra che l'editor di script stesso stia codificando a colori un messaggio come una variabile solo se c'è una linea interruzione tra "<<" e "messaggio", mentre viene eseguito esattamente allo stesso modo con e senza interruzione di riga tra "<<" e "messaggio" in modo completamente indipendente dalla codifica a colori.
Credo però di aver ristretto un po' il campo della questione. Di seguito ho copiato cosa voglio che faccia lo script della tabella, come appare sulla mia installazione JMP e cosa sembra fare sul computer dei colleghi.
// what i want the table script to do
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Table_2 = Data Table( "table_1" ) << Subset(
Filtered Rows(
Contains( :Category_1, "some_category" ) & Contains( :Category_2, "some_other_category" )
)
);
Table_3 = Table_2 << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
// what the table script looks like on my computer
// it does exactly the same as the above version, despite the line break before 'Subset'
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Table_2 = Data Table( "table_1" ) <<
Subset(
Filtered Rows(
Contains( :Category_1, "some_category" ) & Contains( :Category_2, "some_other_category" )
)
);
Table_3 = Table_2 << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
// what it appears to be doing on my colleagues computer
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Data Table( "table_1" ) << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Forse la soluzione è modificare lo script della tabella in questo modo?
// a solution to be tested?
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Wait(); // this would be the new part per Byron's suggestion
Table_2 = Data Table( "table_1" ) << Subset(
Filtered Rows(
Contains( :Category_1, "some_category" ) & Contains( :Category_2, "some_other_category" )
)
);
Table_3 = Table_2 << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Cosa ne pensi? Grazie mille per il tuo aiuto finora e anche per eventuali commenti aggiuntivi che potresti avere. Nel caso in cui capissi qual è il problema, lo pubblicherò sicuramente qui.
Ri: Lo script viene eseguito in modo diverso su un altro computer?Suggerirei di aggiungere Wait(0); invece di Wait() poiché Wait() verrà impostato automaticamente su 3 secondi.

Potresti anche modificare le righe filtrate per ottenere righe dove (potresti almeno rendere più semplice il debug)
rows_of_interest = Data Table("table_1") << Get Rows Where(Contains(:Category_1, "some_category") & Contains(:Category_2, "some_other_category"));
Table_2 = Data Table("table_1") << Subset(
Rows(rows_of_interest)
);R: Lo script viene eseguito in modo diverso su altri computer?Grazie mille @jthi ! Aggiungere solo 'wait(0)' non ha funzionato. Usare il tuo approccio 'rows_of_interest' ha portato al successo. Lo trovo ancora strano.
@Byron_JMP , @hogi - per vostra informazione e grazie per i suggerimenti.