Tabellenskripte?Es könnte definitiv ein Fall von RTFM sein, aber ich habe eine Frage:
In einem meiner JMP-Datasets verwende ich eine Funktion als Zwischenstufe in mehreren Formelspalten. Um das Duplizieren des gleichen Codes (und das Duplizieren von Arbeit, wenn ich diese Funktion ändern müsste) zu verhindern, habe ich die Funktion in ein Skript eingefügt und in der Datentabelle gespeichert.
Das Problem tritt auf, wenn ich den Datensatz öffne und Daten hinzufügen möchte. Damit die Formelspalten korrekt ausgeführt werden, muss ich zuerst auf den grünen Pfeil neben dem Skript klicken, um es zuerst auszuführen, bevor die Formelspalten ihre Aufgabe erfüllen können. Wenn das Skript nicht ausgeführt wird, ist die Funktion nicht definiert.
Gibt es eine Möglichkeit, Funktionen wie diese in ähnlicher Form wie die Tabellenvariablen zu implementieren, die beim Öffnen der Datendatei automatisch ausgeführt werden?
edit: Ich habe eine Beispieldatei angehängt. Das Skript befindet sich im Skript Utility Functions.
Re: Tabellenskripte?Überprüfen Sie, ob das OnOpen-Skript Ihren Anforderungen entspricht. es wird (standardmäßig) aufgefordert. Sie können die Einstellung bei Bedarf ändern. Beachten Sie, dass das OnOpen-Skript NICHT ausgeführt wird, wenn das folgende Skript ausgeführt wird. Wenn Sie jedoch die leere Tabelle speichern, schließen und erneut öffnen, wird das Skript ausgeführt. Wenn Sie dann der frisch geöffneten Tabelle Zeilen hinzufügen, können Sie die globale Funktion verwenden.
New Table( "globalFunctionOnOpen",
Add Rows( 0 ),
New Script( "OnOpen", global:myFunc = Function( {a, b}, a + b ) ),
New Column( "x", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "y", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "z", Numeric, "Continuous", Format( "Best", 12 ), Formula( global:myfunc( :x, :y ) ), Set Selected )
)Re: Tabellenskripte? @robhanssen ,
Im Folgenden finden Sie einige zu berücksichtigende Optionen. Was die beste Wahl sein könnte, hängt von der Verwendung ab.
- Refactor: In diesem Beispiel kann die einfache Utility-Funktion mit einer Spalte ausgeführt werden, die ich MTD nennen werde. Die Funktion gibt eine 1 oder 0 zurück. Ändern Sie dann Ihre Funktionen: Ändern Sie yearToDate (: month,: Elec Cost) in: MTD *: ElecCost. Verwenden Sie also nach Möglichkeit Spaltenfunktionen.
- Erstellen Sie ein Add-In : etwas, das für die Tabelle spezifisch ist, UpdateMyTablename oder ein Skript, das alle Ihre Dienstprogrammfunktionen ausführt, RunUtiltyFunc. Hinweis: Ein Add-In kann von anderen Benutzern gemeinsam genutzt und verwendet werden und bei Bedarf ausgeführt werden. Die Funktionen stehen während der gesamten Sitzung zur Verfügung, sofern keine globalen Elemente gelöscht werden.
- Erstellen Sie ein Startskript : Wenn Sie über eine Reihe von Dienstprogrammfunktionen verfügen, die Sie möglicherweise häufig verwenden, können Sie diese über ein Startskript definieren / einschließen / ausführen. Beispiele, die ich verwendet habe, sind: eine unternehmensspezifische Schichtdefinition, eine Arbeitswochenfunktion, ein Logo oder eine häufig verwendete mathematische Funktion. Von dem JMP Scripting Guide> Anwendungen erstellen > Add-Ins
Angeben von Start- und Beendigungsskripten (optional)
Klicken Sie auf die Registerkarte Startskript, um ein Skript hinzuzufügen, das beim Start von JMP ausgeführt wird (und das Add-In
beginnt). Sie können ein vorhandenes Skript auswählen (JSL in dieser Datei ausführen) oder kopieren und in ein Skript einfügen (Ausführen
diese JSL). Beispielsweise können Sie dem Benutzer eine Nachricht mitteilen, dass es sich bei dem Add-In handelt
beim Start installiert.