Private Datentabellen ein- und ausschaltenUm viele meiner Skripte sauber zu halten, verwende ich häufig „privat“. Wenn ich jedoch ein Skript behebe, stört es mich, wenn die Tabellen privat sind, und ich muss sie auskommentieren und hoffentlich daran denken, die Kommentare zu entfernen, wenn ich Änderungen vornehme, um zu sehen, ob die Änderungen funktionieren.
Gibt es eine Möglichkeit oder verfügt JMP bereits über eine globale Möglichkeit, private Tabellen ein- oder auszuschalten? In meinem Kopf könnte ich mir die Zeit nehmen, Duplikate meines Codes mit und ohne Private zu erstellen und ihn an eine Testvariable zu binden, aber das scheint nicht die beste Antwort zu sein.
Ich war mir nicht sicher, ob es irgendwelche Ideen gab, wie man das machen könnte. Danke!
Automatisierung und SkripterstellungBetreff: Private Datentabellen ein- und ausschaltenDas ist ausgezeichnet, Vince! Es ähnelt dem, was ich letztendlich gemacht habe, ist aber viel eleganter, da die Datenansicht in beide Richtungen erfolgen kann.
Betreff: Private Datentabellen ein- und ausschaltenEinverstanden @Craige_Hales Und @txnelson zu diesen Punkten.@Ressel , der Hauptgrund, warum ich mich normalerweise für private Tabellen entscheide, ist, wenn ich ein Skript habe, das Änderungen/Aktualisierungen/usw. an vielen Tabellen vornimmt. Wenn sie in Ruhe gelassen werden, können sie auf dem Bildschirm vor einem Benutzer sehr auffällig sein, wenn die Fenster hochfahren, verschwinden usw. Wenn sie unsichtbar sind, sieht der Benutzer möglicherweise viel Aktivität in der Fensterliste, was auch der Fall sein kann eine Ablenkung.
Meistens entscheide ich mich für private Tabellen, da sie dem Benutzer die sauberste Benutzeroberfläche bieten und nur die notwendigen visuellen Schritte visuell sind. Abhängig von der Anzahl der Tische und dem Computer des Benutzers führen die RAM-Vorteile auch zu einem Anstieg der Gesamtgeschwindigkeit.
Betreff: Private Datentabellen ein- und ausschaltenJim hat recht; Für eine private Tabelle wird keine Betriebssystemfensterstruktur erstellt, während für eine unsichtbare Tabelle ein Fenster vorhanden ist, das nicht angezeigt wird. Es kann zu geringfügigen CPU- und Speichereinsparungen kommen, die sich bei Hunderten oder Tausenden von Tabellen summieren können.
Das einzige Mal, dass ich privat verwendet habe, war, als ich schrieb FileSnapper und wollte, dass die Anwendung leise läuft, ohne die JSL-Umgebung für andere laufende JSLs zu stören. Meistens können Sie die private Datentabelle überhaupt nicht erkennen. Es gibt einen Spaltennamen, der ein wenig aufdringlich ist.
Betreff: Private Datentabellen ein- und ausschaltenNathan, ist das überhaupt hilfreich?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
privateTable = Function({bool,dt},{default local},
table_name = dt << Get Name;
If(!bool & !(dt << HasDataView), // no table but you want one
print("making "||table_name||" public");
dt << New Data View;
Return(dt);
, // elif
bool & dt << HasDataView, // you have a table but want it private
print("making "||table_name||" private");
dt_sub = dt << Subset( All rows, Selected columns only( 0 ), "private" );
close(dt, no save);
dt_sub << Set Name(table_name);
return(dt_sub);
, // else just return what's given
print("passthrough");
return(dt);
)
);
dt = privateTable(1, dt); // should make it private
wait(2);
dt = privateTable(1, dt); // should do nothing
wait(2);
dt = privateTable(0, dt); // should do make it visible
wait(2);
dt = privateTable(1, dt); // should do make it private again
Betreff: Private Datentabellen ein- und ausschaltenDer Vorteil besteht darin, RAM zu sparen.Eine private Tabelle erstellt keine sichtbaren Objekte.Alle diese Objekte müssten dem Speicher zugeordnet werden, wenn sie sichtbar wären.
Betreff: Private Datentabellen ein- und ausschaltenWas genau sind die Vorteile der Verwendung privater Tische? Speicher sparen?
Betreff: Private Datentabellen ein- und ausschaltenJa! Das ist definitiv auf meinem Radar. Ich verfüge über eine Bibliothek mit Funktionen/Dienstprogrammen, von denen ich viele Dinge bereithalte (und verteile), und die Umstellung auf den Aspekt der benutzerdefinierten Funktionen ist für viele der dynamischeren Funktionen ein langfristiger Plan.
Betreff: Private Datentabellen ein- und ausschaltenWenn Sie diese Funktion häufig benötigen, könnte die Erstellung einer benutzerdefinierten Funktion für Sie von Nutzen sein Erstellen Sie benutzerdefinierte Funktionen, Transformationen und Formate (jmp.com) .Auf diese Weise können Sie die benutzerdefinierte Funktion auch direkt im Skriptindex sehen.
Betreff: Private Datentabellen ein- und ausschaltenVielen Dank an alle! Am Ende habe ich Folgendes getan, was zwar nicht ideal, aber ziemlich gut funktionieren sollte. Ich habe eine Funktion erstellt und habe oben in meinem Skript eine Variable, mit der ich „Privat“ grundsätzlich ein- und ausschalten kann
seePrivateTables = 1;
unprivatizeTable = Function({bool,tableName},{default local},
If(bool == 1,
tableName << New Data View;
Return(tableName)
,
Return(tableName)
)
);
// ... various code
dt1 = dt << Summary(.... , private);
dt1 = unprivatizeTable(seePrivateTables, dt1);Solange ich daran denke, diese Funktion aufzurufen, wenn ich neue Tabellen erstelle, sollte ich in der Lage sein, private Tabellen in großen Mengen ein- und auszuschalten.
Betreff: Private Datentabellen ein- und ausschaltenSichtbare und unsichtbare Tabellen werden von JMP verfolgt. Sie können sie beispielsweise im heimischen Fenster im Auge behalten. Private Tabellen werden nur durch den Code verfolgt, der sie erstellt. Wenn Sie eine private Tabelle nicht schließen, bevor Sie die JSL-Variable überschreiben, die ihr Handle enthält, befindet sich die Tabelle immer noch im Speicher, ist aber nicht erreichbar. Es wird geschlossen, wenn JMP beendet wird. (Window->CloseAllDataTables kann die privaten Tabellen nicht finden und schließt sie nicht.)
Ich bin mir auch ziemlich sicher, dass JMP keine Möglichkeit bietet, eine sichtbare oder unsichtbare Tabelle privat zu machen. Sie können einen privaten Tisch wie folgt in einen unsichtbaren verwandeln, wenn Sie über das Handle verfügen:
dtA = Open( "$SAMPLE_DATA/Big Class.jmp", private );
// getting the data box makes it invisible
b = dtA << New Data Box();
// then show window makes it visible
dtA << Show Window;
Leider das Schlüsselwort „unsichtbar“. Ist ein Schlüsselwort und kann nicht als Variable übergeben werden, zumindest nicht an open(). Ich bin mir nicht sicher, was die Teilmenge usw. betrifft. Das Beste, was Sie wahrscheinlich tun können, ist, nach jedem Punkt, an dem Sie eine Tabelle erstellen oder öffnen, einen Aufruf einer Benutzerfunktion hinzuzufügen, die so etwas wie oben ausführt.
Betreff: Private Datentabellen ein- und ausschaltenMöglicherweise können Sie die private Tabelle sichtbar machen, indem Sie << Neue Datenansicht verwenden. Ich bin mir nicht zu 100 % darüber im Klaren, was das in diesem Zusammenhang bewirkt, aber es scheint private Tabellen sichtbar zu machen, und ich habe es zum Debuggen verwendet:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", private);
wait(2);
dt << New Data View;
Keine Ahnung, wie man es wieder privat macht, aber << Show Window(0); wird es zumindest unsichtbar machen.
Betreff: Private Datentabellen ein- und ausschaltenMir ist nicht bekannt, dass es möglich ist, „Privat“ ein- und auszuschalten, da hierfür alle Anzeigeobjekte im Speicher im laufenden Betrieb erstellt werden müssten.Sie können jedoch die Meldung „Fenster anzeigen“ verwenden, um normale oder unsichtbare Datentabellen anzuzeigen/auszublenden.
data table("Daily Blood Pressure")<<SHOW window=""></SHOW>