Ri: Automazione di livello successivo utilizzando lo scripting JSLAggiunta @Giordania_Hiller E @ChristianBill a questo commento.
Grazie a tutti per averlo messo insieme. Ho una domanda di follow-up sulla "generalizzazione" e ha più a che fare con la mia mancanza di capacità di scripting. Normalmente nel mio flusso di lavoro, devo "selezionare tutte le colonne" e poi fare qualcosa, sia che si tratti di riepilogare, raggruppare, esplorare i valori mancanti, ecc. Tuttavia, ho migliaia di colonne e avranno nomi diversi in ogni nuova tabella di dati , quindi non posso semplicemente sostituire 5.000 colonne quando mi viene richiesto che non riesce a trovare una particolare colonna (ci vorrebbero ore). Mi chiedo se posso raggruppare le colonne PRIMA e quindi eseguire i restanti passaggi del flusso di lavoro sul gruppo. Potrei dare al gruppo un nome generico.
L'alternativa sarebbe provare a selezionare le colonne in base a una proprietà nel loro nome, come nello script seguente. Se c'è modo di scriverlo dove il passaggio successivo nel flusso di lavoro presenta le colonne SELEZIONATE generate da questo script? Ad esempio, se volessi trasporre tutte le colonne con "il" nel nome, questo script potrebbe essere incorporato in un flusso di lavoro? Sto cercando di pensare a come evitare di dover ricodificare i nomi delle colonne in ogni file, anche se questa è un'altra opzione!
Mi rendo conto che Workflow Builder probabilmente funziona meglio quando hai dozzine di tabelle formattate in modo identico da scricchiolare, ma sto cercando di capire se posso farlo cooperare quando ogni tabella differisce leggermente.
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
for each({Name}, colNames,
if(contains(Name,"nox"),
for each row(
column(name)[row()] = ???????????; // your formula here
)
);
);
Ri: Automazione di livello successivo utilizzando lo scripting JSLSe ho capito la tua domanda, @abmayfield , stai chiedendo se un flusso di lavoro JMP17 può gestire un gran numero di nomi di colonna che cambiano. Dirò di sì, è possibile, ma non senza inserire alcuni JSL personalizzati nel flusso di lavoro.
Un buon approccio è fare in modo che il tuo flusso di lavoro/script agisca sulle colonne selezionate dall'utente Prima eseguire il flusso di lavoro.
Ecco un esempio che utilizza il set di dati campione della pressione sanguigna.
Names Default To Here( 1 );
//Custom JSL: Get the user-selected columns, save them into list CNames
CNames = Current Data Table() << Get Selected Columns;
//Slightly modified workflow step: replace hard-coded columns with list CNames
Data Table( "Blood Pressure" ) << Transpose(
columns( CNames ),
By( :Dose ),
Label( :Subject ),
Output Table( "tdata" )
);
Comunque lo attacchi, la soluzione probabilmente coinvolgerà JSL elenchi . Imparare qualcosa sulle liste può darti nuovi superpoteri di programmazione!
Automazione di livello successivo tramite scripting JSLIl video è stato aggiornato nell'agosto 2024.
I flussi di lavoro sono un modo senza codice per automatizzare analisi e report che usi spesso o quotidianamente. Inoltre, puoi convertire i flussi di lavoro in script JSL per offrire un'esperienza utente fluida e una presentazione più raffinata e creare un componente aggiuntivo da condividere con altri. Questa demo mostra le basi su come comprendere e modificare gli script del flusso di lavoro e renderli più flessibili per nuovi dati e nuovi utenti. Si presume che tu abbia una certa esperienza nella creazione di un flusso di lavoro JMP.
Lo studio del caso si avvale di tre fonti che utilizziamo per creare il flusso di lavoro utilizzando i dati degli anni 2015-2017 e quindi creare uno script in grado di funzionare con i dati degli anni successivi.
Il file .zip allegato contiene tutti i file necessari per esercitarsi, tra cui due versioni dei dati Excel sull'assistenza all'infanzia e il componente aggiuntivo Childcare Analysis JMP.
Scopri come:
- Comprendere alcuni dei componenti di base JSL
- Commenti
- Riferimento alle colonne nelle tabelle dati
- Espressioni e oggetti a cui si riferiscono
- Variabili di percorso
- Crea flusso di lavoro
- Salvare lo script del flusso di lavoro
- Modifica lo script per generalizzare per nuovi dati e nuovi utenti
- Modificare i nomi delle tabelle e i percorsi dei file
- Crea variabili nome tabella dati
- Aggiungere meccanismi di input utente in base alle necessità (Seleziona file, Finestra di dialogo Colonna, ecc.)
- Scegli un file
- Crea JSL per selezionare un file in base a criteri specifici
- Imposta come predefinita la tabella dati aperta corrente
- Selezionare una colonna e quindi scaricare la colonna selezionata dalla finestra di dialogo, per agire su di essa in un secondo momento nello script.
- Utilizzare il commutatore di colonne del report incorporato anziché scegliere una colonna
- Facoltativamente, salvare lo script come componente aggiuntivo JMP per la distribuzione
- Crea il componente aggiuntivo utilizzando File > Nuovo > Componente aggiuntivo
- Crea una voce di menu e/o una voce di barra degli strumenti per avviare lo script
- Includi file di dati, PDF, ecc.
- Installa il componente aggiuntivo e condividilo con altri utenti che possono installarlo facendo doppio clic sul file *.jmpaddin
Domande a cui ha risposto Jordan Hiller @Jordan_Hiller durante il webinar in diretta:
Se il mio flusso di lavoro genera una NUOVA tabella nel processo e questa nuova tabella viene poi chiamata da passaggi successivi, riscontro dei problemi perché alla tabella appena formata verrà assegnato un nome difficile da prevedere, come "senza titolo 5". Questo passaggio può essere "generalizzato" in modo simile?
R: Il punto in cui lo incontrerai in particolar modo è quando utilizzi cose nel menu Tabelle come impila e dividi e trasponi, e le cose che crei con impila, dividi, trasponi. A meno che tu non dia loro un nome esplicito, saranno chiamate u=Senza titolo 17 o Senza titolo 32. Quindi, dai un nome alla nuova Tabella di output durante le operazioni del menu Tabelle.

Renamed split tableRinominata la tabella divisa
Se uno script JSL è stato eseguito senza Workflow Builder, come può essere trasformato in un Workflow?
R: Sì, puoi creare una nuova azione personalizzata del flusso di lavoro, quindi copiare e incollare lo script in una finestra oppure suddividere lo script in azioni personalizzate separate.
Potresti premere Registra in Workflow Builder e poi eseguire lo script? WFB catturerebbe i passaggi dello script?
R: In JMP 17 e nelle versioni precedenti, non cattura i passaggi. Tuttavia, i flussi di lavoro di JMP 18 catturano effettivamente gli script che vengono eseguiti mentre il flusso di lavoro è in fase di registrazione.
Hai qualche suggerimento per l'esecuzione di Fit Model con la variabile "by"? Il flusso di lavoro salva un'istanza, che ha una ripartizione di ogni categoria? Ma come renderlo più generale quando la colonna ha una nuova categoria?
R: Per gruppo, lo scripting per gruppi in JSL è un po' complicato. Devi sapere come gestire gli elenchi JSL. Ti consiglio di consultare la community degli utenti JMP o di inviare una domanda alla community degli utenti, e lì troverai dei buoni consigli.
Esiste una variabile di percorso che fa riferimento alla directory in cui si trova lo script in esecuzione?
R: No, non c'è una variabile di percorso per lo script. Puoi aggirare il problema. Spesso quando specifichi un file in uno script JMP, se il file si trova nello stesso percorso/directory/cartella nello stesso script che stai eseguendo, puoi rimuovere il percorso/directory dal nome del file e usare un percorso relativo. Vedi sotto.
Risorse

Automazione e scriptingRi: Automazione di livello successivo utilizzando lo scripting JSLPotresti premere Registra in Workflow Builder ed eseguire lo script? WFB catturerebbe i passaggi della sceneggiatura?
Jmp18: sì
Ri: Automazione di livello successivo utilizzando lo scripting JSLGrazie @hogi ! Ho modificato la risposta alla domanda sopra. Come indicato da Hogi, i flussi di lavoro JMP 18 acquisiscono effettivamente gli script eseguiti durante la registrazione del flusso di lavoro.