Wenn ich den Workflow erstelle, verwende ich möglicherweise tabulate, um eine Übersichtstabelle zu erstellen, die automatisch den Namen „Untitle 1“ erhält. Wenn ich den Workflow daher erneut ausführe, erhält die neu erstellte Übersichtstabelle den Namen „Untitle 2“, sodass der Workflow Untilte1 nicht finden kann und ich manuell eine Referenz zuweisen muss. Bei vielen neuen Tabellen treten häufig Fehler auf.
Gibt es eine Möglichkeit, Workflow die neue Tabelle automatisch erkennen zu lassen? Oder könnten wir die Tabelle in Tabulate direkt benennen, bevor wir sie „zur Tabelle machen“: „Untitle“?
Danke!
Sie können den Namen festlegen, wenn Sie Tabulate verwenden, aber ich denke, Sie müssen dies tun, indem Sie das JSL ändern (fügen Sie „Output Table("tablename")" zu << Make Into Data Table hinzu).
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 ist großartig – der Benutzer muss keine JSL-Skriptkenntnisse haben.
... bis er mit der Falle konfrontiert wird: Tabellennamenkonflikte.
In 50 % der Fälle gibt es keine Tabelle mit passendem Namen – und JMP wird danach fragen.
Das Problem beginnt, WENN es eine Tabelle mit passendem Namen gibt und es sich um den falschen handelt.
Das Thema wird in den Fragen und Antworten dieses Vortrags besprochen:
Workflow Builder oder die „Babyschritte“ ins Scripting
Es gibt mehrere „Workarounds“:
Die einfachste (#4b) – folgen Sie dem Beispiel von @jthi :
Verwenden Sie ein wenig JSL und speichern Sie die Tabellenreferenzen als „ dt “. Verwenden Sie dt dann auch in allen anderen Workflow-Schritten.
NB: Die Angabe „Ausgabetabelle“ funktioniert nur, bis eine Kollision auftritt, dann wird aus „Ohne Titel“ „Ohne Titel 2“.
andere Ansätze:
#1 Verwenden Sie das Rückspulsymbol

... um alle Datentabellen zu schließen, dann ist die neu erstellte Tabelle wieder "Ohne Titel".
-> keine robuste Lösung
Der Ansatz schlägt fehl, sobald eine offene Datentabelle ohne Titel vorhanden ist und der Benutzer versucht, den Workflow auszuführen.
#2: Speichern
Nachdem Sie die Datentabelle erstellt haben, speichern Sie sie unter einem bestimmten Namen. Verwenden Sie die gespeicherte Datentabelle, um die weiteren Schritte aufzuzeichnen.
Cool: Beim Speichern fügt JMP keine „2“ hinzu, selbst wenn ein Tabellennamenkonflikt vorliegt.
Verwenden Sie einfach jedes Mal dieselbe temporäre Datei und überschreiben Sie sie.
Nicht schön – aber sehr effektiv!!
@Zoe_Betteridge in „Verwenden von JMP-Workflow-Builder zur Automatisierung von Analysen“
#3: neu seit JMP18: Verwenden Sie die For-Each-Schleife
Es ersetzt alle Tabellennamen in verschachtelten Workflow-Schritten durch den Tabellennamen aus dem Importschritt (funktioniert auch für 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: mit ein bisschen JSL: Entfernen Sie in allen Workflow-Schritten die Tabellennamenreferenzen
// for workflow steps like
// Data Table("mytable") << command (...);
// just remove the data table and get:
command( ... )[leider gibt es mehrere Ausnahmen, bei denen dieser Ansatz fehlschlägt].
#4b: Ändern Sie den Code und verwenden Sie eine Variable als Referenz für die Datentabelle
Importschritt:
// add "dt ="
dt = open( ...);
Nachfolgende Arbeitsschritte:
// replace:
// Data Table("mytable") << command (...)
// with
dt << command( ...)
Ich hoffe, dass es in einer zukünftigen Version von JMP einen Workflow Builder geben wird, der den Benutzer automatisch davor bewahrt, in diese Falle zu tappen, z. B.
- Sobald eine Datentabelle erstellt wurde, kann Worklow Builder nach einem geeigneten Variablennamen fragen, um auf die Datentabelle zu verweisen.
- eine Schaltfläche im Workflow Builder:
Datentabellenreferenz durch Tabellennamen ersetzen -> Datentabellenreferenz durch Variable