Quando creo il flusso di lavoro, potrei usare Tabulate per creare una tabella di riepilogo che viene automaticamente denominata "Untitle 1". Di conseguenza, quando eseguo nuovamente il flusso di lavoro, la tabella di riepilogo appena creata viene denominata "Untitle 2", quindi il flusso di lavoro non riesce a trovare Untilte1 e devo fornirgli manualmente un riferimento. Inoltre, se ci sono molte nuove tabelle, si verificano spesso degli errori.
C'è un modo per far sì che Workflow riconosca automaticamente la nuova tabella? Oppure, potremmo nominare direttamente la tabella in Tabulate prima di "trasformarla in tabella" "Untitle"?
Grazie!
Puoi decidere il nome quando usi Tabulate, ma penso che tu debba farlo modificando il JSL (aggiungi Output Table("tablename") a << Make Into Data Table)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Car Poll.jmp");
obj = dt << Tabulate(
Add Table(
Column Table(Grouping Columns(:sex, :marital status)),
Row Table(Grouping Columns(:country, :size))
)
);
dt = obj << Make Into Data Table(Output Table("My Table"));Workflow Builder è fantastico: l'utente non ha bisogno di conoscere nessuno scripting JSL.
... finché non si ritrova di fronte alla trappola: conflitti nei nomi delle tabelle.
Nel 50% dei casi non esiste alcuna tabella con il nome corrispondente e JMP chiederà.
Il problema inizia SE esiste una tabella con il nome corrispondente, ma è quella sbagliata.
L'argomento è discusso nella sezione Q&A di questo talk:
Workflow Builder o i "piccoli passi" nello scripting
Esistono diverse "soluzioni alternative":
Il più semplice (#4b) - seguendo l'esempio di @jthi :
usa un po' di JSL e memorizza i riferimenti alla tabella come " dt ". Quindi usa dt anche in tutti gli altri passaggi del flusso di lavoro.
NB: Specificando "Tabella di output" funziona solo finché non si verifica una collisione, dopodiché "Senza titolo" diventerà "Senza titolo 2".
altri approcci:
#1 usa l'icona di riavvolgimento

... per chiudere tutte le tabelle dati, la tabella appena generata sarà di nuovo "Senza titolo".
-> nessuna soluzione robusta
L'approccio fallirà quando sarà presente una tabella dati aperta Senza titolo e l'utente proverà a eseguire il flusso di lavoro.
#2: salva
dopo aver creato la tabella dati, salvala con un nome specifico. Utilizza la tabella dati salvata per registrare i passaggi aggiuntivi.
Fantastico: con Salva, anche se c'è un conflitto nei nomi delle tabelle, JMP non aggiungerà un "2".
Basta utilizzare ogni volta lo stesso file temporaneo e sovrascriverlo.
Non è bello, ma è molto efficace!!
@Zoe_Betteridge in Utilizzo di JMP Workflow Builder per automatizzare l'analisi
#3: novità da JMP18: utilizzare il ciclo for each
Sostituisce tutti i nomi delle tabelle nei passaggi del flusso di lavoro nidificati con il nome della tabella dal passaggio di importazione (funziona anche per N=1):
https://community.jmp.com/t5/Benelux-JMP-Users-Group/Workflow-Builder-or-the-quot-baby-steps-quot-into-Scripting/mp/739486/highlight/true#M7
#4: con un po' di JSL: in tutti i passaggi del flusso di lavoro, rimuovere i riferimenti al nome della tabella
// for workflow steps like
// Data Table("mytable") << command (...);
// just remove the data table and get:
command( ... )[Purtroppo ci sono diverse eccezioni in cui questo approccio fallisce].
#4b: modificare il codice e utilizzare una variabile come riferimento per la tabella dati
fase di importazione:
// add "dt ="
dt = open( ...);
successivi passaggi del flusso di lavoro:
// replace:
// Data Table("mytable") << command (...)
// with
dt << command( ...)
Spero che in una futura versione di JMP ci sarà un Workflow Builder che impedirà automaticamente all'utente di cadere in questa trappola, ad esempio
- Una volta creata una tabella dati, Worklow Builder potrebbe richiedere un nome di variabile appropriato per fare riferimento alla tabella dati.
- un pulsante in Workflow Builder:
sostituisci il riferimento alla tabella dati con il nome della tabella -> riferimento alla tabella dati con la variabile
In base all'opzione 4b, nella lista dei desideri è presente un post per risolvere automaticamente il problema:
Consenti ad Action Recorder di utilizzare nomi di variabili semplici come riferimenti