Wird das Skript auf einem anderen Computer anders ausgeführt?Folgendes Szenario: Ich habe einen Kollegen in Übersee, für den ich ein Skript geschrieben habe. Es ist ein Skript, das Daten aus einer Datenbank lädt, die Daten in einer Tabelle organisiert und ein Tabellenskript für Kontrolldiagramme in die Tabelle einfügt. Die Tabelle enthält einige verschiedene Produkte/Prozesse und dieses eine Tabellenskript ist nur auf eines davon ausgerichtet (d. h. einen winzigen Bruchteil aller Zeilen). Wenn ich das Haupt- und das Tabellenskript auf meinem Computer ausführe, funktionieren sie wunderbar. Wenn mein Kollege in Übersee sie ausführt (und ich habe dies während eines Telefongesprächs auf seinem Bildschirm gesehen), holt er die Tabelle problemlos aus der Datenbank und das Tabellenskript wird ausgeführt, schlägt jedoch bei der Zeilenauswahl, die es im Kontrolldiagramm darstellen soll, gewaltig fehl. Es verwendet Hunderte, wenn nicht Tausende irrelevanter Zeilen aus der oder einer falschen Teilmenge.
Im Tabellenskript verwende ich nicht „Names Default To Here (1);“. Mein Kollege hat eine andere JMP-Version installiert (17.0 vs. 17.2.), was meiner Meinung nach keine Rolle spielen sollte. Als erste Reaktion habe ich eine Kopie meiner mit dem Preferences Manager (mit Import/Export) exportierten Einstellungen gesendet, was jedoch nicht zur Lösung beigetragen hat.
Er schickte mir dann eine Kopie seiner Tabelle und als ich das Tabellenskript darin untersuchte, entdeckte ich einen kleinen Unterschied zu dem, wie das Tabellenskript aussieht, wenn ich das Skript von oben auf meinem Computer ausführe:
Auf meinem Computer:

Auf dem Computer meines Kollegen:

Als ich jedoch das Tabellenskript (also die untere Version) in der Kopie der Tabelle ausführte, die er erstellt und mir per E-Mail auf meinem Computer zugeschickt hatte, wurde das Tabellenskript wie vorgesehen ausgeführt. Leider weiß ich überhaupt nicht, was hier vor sich geht.
Was könnte die Ursache sein, wie können wir das Problem beheben und in Zukunft vermeiden? Gibt es Best Practices? Vielen Dank!
Automatisierung und SkriptingBetreff: Wird das Skript auf einem anderen Computer anders ausgeführt?Es kann durchaus Unterschiede zwischen den Wartungsversionen von JMP geben, die alle möglichen Unterschiede/Probleme verursachen können.
Funktioniert das Skript für Ihren Kollegen ordnungsgemäß, wenn er das Skript vom Tabellenskript trennt, am Anfang des Skripts „Names Default To Here(1)“ hinzufügt und es aus einem separaten Skriptfenster ausführt?
Betreff: Wird das Skript auf einem anderen Computer anders ausgeführt?- Lokale Unterschiede im Datenformat können eine Abfrage wirklich durcheinander bringen. (Dies kann lokal vom Betriebssystem bestimmt werden.)
-Versionsunterschiede seit etwa v14 verursachen selten Probleme.
-Wenn Sie einen neueren, schnelleren Computer und eine Datenbankverbindung haben und Ihr College einen sehr langsamen Computer und eine schlechte Netzwerkverbindung zur Datenbank hat, könnte das ein Problem sein. (Möglicherweise müssen Sie etwas wait(); oder dt< hinzufügen.
Betreff: Wird das Skript auf einem anderen Computer anders ausgeführt?
wird durch Meldungen zu unbekannten Farbobjekten verursacht:

grundsätzlich ist die Einstellung sehr sinnvoll – sofern man akzeptiert, dass auch einige „bekannte“ eingefärbt werden.
Der Nachteil bei "unbekannten" Nachrichten: Es ist nicht möglich, den Scripting-Index zu öffnen über

Betreff: Wird das Skript auf einem anderen Computer anders ausgeführt?@jthi , das Problem ist genau das gleiche, als ich meinen Kollegen in Übersee bat, das von Ihnen vorgeschlagene Diagnoseverfahren zu befolgen.
@Byron_JMP , so wie ich es während unserer Videokonferenzen sehe, wird das anfängliche Skript ungefähr so schnell ausgeführt wie an meinem Standort. Ich vermute auch, dass die Laptops in unserem Unternehmen alle relativ ähnliche Spezifikationen haben. Verwirrend ist, dass, wenn mein Kollege mir die anfängliche Tabelle, die er aus dem ersten oder „Haupt“-Skript erhalten hat, per E-Mail schickt und ich das Tabellenskript darin ausführe, es genau das tut, was ich erwarte. Vielleicht ist also die Leitungsgeschwindigkeit nicht das Problem
@hogi Ich habe diese Einstellung nicht aktiviert, daher sieht es in meinem Fall (und ich habe die Screenshots auf meinem Computer von meiner JMP-Installation gemacht) so aus, als würde der Skript-Editor selbst eine Nachricht nur dann wie eine Variable farbcodieren, wenn zwischen "<<" und "Nachricht" ein Zeilenumbruch steht, während er mit und ohne Zeilenumbruch zwischen "<<" und "Nachricht" völlig unabhängig von der Farbcodierung genauso ausgeführt wird.
Ich glaube jedoch, dass ich das Problem etwas eingegrenzt habe. Ich habe unten eingefügt, was das Tabellenskript tun soll, wie es auf meiner JMP-Installation aussieht und was es auf dem Rechner eines Kollegen zu tun scheint.
// what i want the table script to do
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Table_2 = Data Table( "table_1" ) << Subset(
Filtered Rows(
Contains( :Category_1, "some_category" ) & Contains( :Category_2, "some_other_category" )
)
);
Table_3 = Table_2 << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
// what the table script looks like on my computer
// it does exactly the same as the above version, despite the line break before 'Subset'
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Table_2 = Data Table( "table_1" ) <<
Subset(
Filtered Rows(
Contains( :Category_1, "some_category" ) & Contains( :Category_2, "some_other_category" )
)
);
Table_3 = Table_2 << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
// what it appears to be doing on my colleagues computer
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Data Table( "table_1" ) << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Vielleicht besteht die Lösung darin, das Tabellenskript wie folgt zu ändern?
// a solution to be tested?
Data Table( "table_1" ) << Clear Selection;
Data Table( "table_1" ) << Clear Column Selection;
Wait(); // this would be the new part per Byron's suggestion
Table_2 = Data Table( "table_1" ) << Subset(
Filtered Rows(
Contains( :Category_1, "some_category" ) & Contains( :Category_2, "some_other_category" )
)
);
Table_3 = Table_2 << Split(
Split By( :Col_1, :Col_2 ),
Split( :Col_3 ),
Group( :Col_4, :Category_1, :Category_2 ),
Output Table( "table_3" ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Was meinen Sie? Vielen Dank für Ihre bisherige Hilfe und auch für Ihre weiteren Kommentare. Falls ich herausfinde, wo das Problem liegt, werde ich es auf jeden Fall hier posten.
Betreff: Wird das Skript auf einem anderen Computer anders ausgeführt?Ich würde vorschlagen, „Wait(0);“ anstelle von „Wait()“ hinzuzufügen, da „Wait()“ standardmäßig auf 3 Sekunden eingestellt ist.

Sie können auch gefilterte Zeilen ändern, um Zeilen zu erhalten, in denen (könnte zumindest das Debuggen einfacher machen)
rows_of_interest = Data Table("table_1") << Get Rows Where(Contains(:Category_1, "some_category") & Contains(:Category_2, "some_other_category"));
Table_2 = Data Table("table_1") << Subset(
Rows(rows_of_interest)
);Betreff: Wird das Skript auf einem anderen Computer anders ausgeführt?Tausend Dank, @jthi ! Das Hinzufügen von „wait(0)“ allein hat nicht funktioniert. Die Verwendung Ihres Ansatzes „rows_of_interest“ hat zum Erfolg geführt. Ich finde das immer noch seltsam.
@Byron_JMP , @hogi – zu Ihrer Information und danke für die Vorschläge.