Betreff: Automatisierung der nächsten Ebene mit JSL-ScriptingHinzufügen @Jordan_Hiller Und @ChristianBille zu diesem Kommentar.
Vielen Dank an alle, die das zusammengestellt haben. Ich habe eine Folgefrage zum Thema „Verallgemeinern“, die eher mit meinen mangelnden Skriptfähigkeiten zu tun hat. Normalerweise muss ich in meinem Arbeitsablauf „alle Spalten auswählen“ und dann etwas tun, sei es zusammenfassen, gruppieren, fehlende Werte untersuchen usw. Ich habe jedoch Tausende von Spalten, und diese haben in jeder neuen Datentabelle unterschiedliche Namen , also kann ich nicht einfach 5.000 Spalten ersetzen, wenn ich die Meldung bekomme, dass eine bestimmte Spalte nicht gefunden werden kann (würde Stunden dauern). Ich frage mich, ob ich die Spalten ZUERST gruppieren und dann die restlichen Workflow-Schritte für die Gruppe ausführen kann. Ich könnte der Gruppe einen generischen Namen geben.
Die Alternative wäre, zu versuchen, Spalten anhand einer Eigenschaft in ihrem Namen auszuwählen, wie im folgenden Skript. Gibt es eine Möglichkeit, es per Skript dorthin zu schreiben, wo der nächste Schritt im Workflow die von diesem Skript generierten AUSGEWÄHLTEN Spalten enthält? Wenn ich beispielsweise alle Spalten mit „the“ im Namen transponieren möchte, könnte dieses Skript dann in einen Workflow eingebettet werden? Ich versuche darüber nachzudenken, wie ich vermeiden kann, die Spaltennamen in jeder Datei neu kodieren zu müssen, obwohl das noch eine andere Option ist!
Mir ist klar, dass Workflow Builder wahrscheinlich am besten funktioniert, wenn Sie Dutzende identisch formatierter Tabellen bearbeiten müssen, aber ich versuche herauszufinden, ob ich ihn dazu bringen könnte, zusammenzuarbeiten, wenn sich jede Tabelle geringfügig unterscheidet.
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
)
);
);
Betreff: Automatisierung der nächsten Ebene mit JSL-ScriptingWenn ich Ihre Frage verstehe, @abmayfield , fragen Sie sich, ob ein JMP17-Workflow eine große Anzahl sich ändernder Spaltennamen bewältigen kann. Ich sage ja, es ist möglich, aber nicht, ohne benutzerdefiniertes JSL in den Workflow einzufügen.
Ein guter Ansatz besteht darin, Ihren Workflow/Ihr Skript auf die vom Benutzer ausgewählten Spalten einwirken zu lassen Vor Ausführen des Workflows.
Hier ist ein Beispiel mit dem Beispieldatensatz „Blutdruck“.
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" )
);
Wie auch immer Sie dies angreifen, die Lösung wird wahrscheinlich JSL beinhalten Listen . Wenn Sie ein wenig über Listen lernen, können Sie neue Codierungs-Superkräfte erlangen!
Automatisierung der nächsten Ebene mit JSL-SkriptingDas Video wurde im August 2024 aktualisiert.
Workflows sind eine codefreie Möglichkeit, Analysen und Berichte zu automatisieren, die Sie häufig oder täglich verwenden. Darüber hinaus können Sie die Workflows in JSL-Skripte konvertieren, um eine reibungslose Benutzererfahrung und eine ausgefeiltere Präsentation zu bieten, und ein Add-In erstellen, das Sie mit anderen teilen können. Diese Demo zeigt die Grundlagen zum Verstehen und Ändern von Workflow-Skripten und zum flexibleren Gestalten dieser für neue Daten und neue Benutzer. Es wird davon ausgegangen, dass Sie über Kenntnisse zum Erstellen eines JMP-Workflows verfügen.
Die Fallstudie verwendet drei Quellen, die wir verwenden, um den Workflow mit Daten aus den Jahren 2015–2017 aufzubauen und dann ein Skript zu erstellen, das mit Daten aus den Folgejahren arbeiten kann.
Die angehängte ZIP-Datei enthält alle Dateien, die Sie zum Üben benötigen, darunter zwei Versionen der Excel-Daten zur Kinderbetreuung und das JMP-Add-In „Childcare Analysis“.
Erfahren Sie, wie Sie:
- Verstehen Sie einige der JSL-Basiskomponenten
- Kommentare
- Verweisen auf Spalten in Datentabellen
- Ausdrücke und Objekte, auf die sie sich beziehen
- Pfadvariablen
- Workflow erstellen
- Speichern Sie das Workflow-Skript
- Bearbeiten Sie das Skript, um es für neue Daten und neue Benutzer zu verallgemeinern
- Tabellennamen und Dateipfade ändern
- Erstellen von Datentabellennamenvariablen
- Fügen Sie nach Bedarf Benutzereingabemechanismen hinzu (Datei auswählen, Spaltendialog usw.).
- Wählen Sie eine Datei
- Erstellen Sie JSL, um eine Datei basierend auf bestimmten Kriterien auszuwählen
- Standardmäßig zur aktuell geöffneten Datentabelle
- Wählen Sie eine Spalte aus und entladen Sie dann die ausgewählte Spalte aus dem Dialogfeld, um später im Skript darauf zu reagieren.
- Verwenden Sie den Spaltenumschalter des eingebetteten Berichts, anstatt eine Spalte auszuwählen
- Optional können Sie das Skript als JMP-Add-In zur Verteilung speichern.
- Erstellen Sie das Add-In über Datei > Neu > Add-In
- Erstellen Sie ein Menüelement und/oder ein Symbolleistenelement zum Starten des Skripts
- Fügen Sie Datendateien, PDFs usw. ein.
- Installieren Sie das Add-In und geben Sie es an andere Benutzer weiter, die es durch Doppelklicken auf die *.jmpaddin-Datei installieren können.
Von Jordan Hiller @Jordan_Hiller im Live-Webinar beantwortete Fragen:
F: Wenn mein Workflow dabei eine NEUE Tabelle generiert und diese neue Tabelle dann von nachfolgenden Schritten aufgerufen wird, stoße ich auf Probleme, da die neu erstellte Tabelle einen schwer vorhersehbaren Namen erhält, z. B. „unbenannt 5“. Kann dieser Schritt auf ähnliche Weise „verallgemeinert“ werden?
A: Sie werden besonders darauf stoßen, wenn Sie Dinge im Menü „Tabellen“ wie „Stapeln“, „Teilen“ und „Transponieren“ verwenden und die Dinge, die Sie mit „Stapeln“, „Teilen“ und „Transponieren“ machen. Wenn Sie ihnen keinen expliziten Namen geben, werden sie „u=Untitled 17“ oder „Untitled 32“ genannt. Benennen Sie also die neue Ausgabetabelle während der Operationen im Menü „Tabellen“.

Renamed split tableUmbenannte geteilte Tabelle
F: Wenn ein JSL-Skript ohne Workflow Builder ausgeführt wurde, wie kann es in einen Workflow umgewandelt werden?
A: Ja, Sie können eine neue benutzerdefinierte Workflow-Aktion erstellen und das Skript dann kopieren und in ein Fenster einfügen oder das Skript in separate benutzerdefinierte Aktionen aufteilen.
F: Könnten Sie im Workflow Builder auf „Aufzeichnen“ klicken und dann Ihr Skript ausführen? Würde WFB die Schritte des Skripts erfassen?
A: In JMP 17 und früheren Versionen werden die Schritte nicht erfasst. JMP 18-Workflows erfassen jedoch tatsächlich Skripts, die ausgeführt werden, während der Workflow aufgezeichnet wird.
F: Haben Sie einen Vorschlag für die Ausführung von Fit Model mit der Variable „by“? Der Workflow speichert eine Instanz, die eine Aufschlüsselung der einzelnen Kategorien enthält? Aber wie kann man sie allgemeiner gestalten, wenn die Spalte eine neue Kategorie enthält?
A: Gruppenbasiertes Scripting in JSL ist etwas knifflig. Sie müssen wissen, wie man mit JSL-Listen umgeht. Ich schlage vor, Sie konsultieren die JMP-Benutzercommunity oder stellen eine Frage an die Benutzercommunity. Dort erhalten Sie einige gute Ratschläge.
F: Gibt es eine Pfadvariable, die auf das Verzeichnis verweist, in dem sich das aktuell ausgeführte Skript befindet?
A: Nein, es gibt keine Pfadvariable für das Skript. Das lässt sich umgehen. Wenn Sie eine Datei in einem JMP-Skript angeben und die Datei sich im selben Pfad/Verzeichnis/Ordner im selben Skript befindet, das Sie ausführen, können Sie häufig den Pfad/das Verzeichnis aus dem Dateinamen entfernen und einen relativen Pfad verwenden. Siehe unten.
Ressourcen

Automatisierung und SkriptingBetreff: Automatisierung der nächsten Ebene mit JSL-SkriptingKönnten Sie im Workflow Builder auf Aufzeichnen klicken und dann Ihr Skript ausführen? Würde WFB die Schritte des Skripts erfassen?
Jmp18: ja
Betreff: Automatisierung der nächsten Ebene mit JSL-SkriptingVielen Dank, @hogi ! Ich habe die Antwort auf die obige Frage geändert. Wie hogi angegeben hat, erfassen JMP 18-Workflows tatsächlich Skripte, die ausgeführt werden, während der Workflow aufzeichnet.