Was hat Sie zu dieser Wunschliste inspiriert?
Ich schreibe immer mehr oder weniger komplizierte Skripte, um meine Datentabellen zu „bereinigen“ (Tabellenskripte, Tabellenvariablen, Spalteneigenschaften usw. entfernen).
Welche Verbesserung würden Sie gerne sehen?
Stellen Sie eine einfache Plattform zum Bereinigen von Datentabellen bereit. Dies sollte die Möglichkeit bieten, Tabellenskripte, Tabellenvariablen, Spalteneigenschaften, Zeilenzustände und alle anderen Änderungen zu entfernen. Im besten Fall kann der Benutzer entscheiden, was entfernt werden soll. Einige davon könnten in Subset implementiert werden, aber ich denke, dies sollte auch eine separate Plattform sein.
Warum ist diese Idee wichtig?
Erleichtert das Erstellen neuer Datentabellen aus vorhandenen, ohne dass nicht relevante Informationen übernommen werden.
Interessante Idee, @jthi . Wie machst du das heute?
Je nach Fall kann ich entweder:
- Führen Sie diese manuell durch
- Erstellen Sie ein Skript (sofern es sich um eine Automatisierung handelt)
- Manchmal überspringe ich die Bereinigung und habe am Ende eine etwas chaotische Datentabelle, aber das ist kein Problem, bis ich die Tabelle freigebe
Ich werde höchstwahrscheinlich ein Add-In schreiben (ich habe bereits damit begonnen, bin aber auf einen „kleinen“ Feature Creep mit allen möglichen unnötigen Funktionen gestoßen), um diese spezifischen „Metadaten“-Bereinigungsaufgaben auszuführen, da ich sie ziemlich regelmäßig durchführe.
Bis der Wunsch genügend Anerkennung erhält, kann dieses Skript hilfreich sein.
Es erstellt ein Skript für die aktuelle Datentabelle und entfernt – abhängig von den Einstellungen – Skripte, Spalteneigenschaften und den Ausdruck „add rows()“.
Names Default To Here( 1 );
removeScripts = 1;
removeColumnProperties = 1;
remove rows = 1;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << copy table script( "no data" );
tableScript = Eval( Eval Expr( Parse( Expr( Get Clipboard() ) ) ) );
tableScriptList = Substitute( Name Expr( tableScript ), Expr( New Table() ), Expr( List() ) );
If( removeScripts,
tableScriptList = Filter Each( {part}, tableScriptList, Not( Head( Part ) == Expr( New Script() ) ) )
);
tableScriptList = Transform Each( {part}, tableScriptList,
If(
Head( part ) == Expr( New Column() ) & removeColumnProperties,
Substitute( Name Expr( part ), Extract Expr( part, Set Property( Wild List() ) ), . ),
Head( part ) == Expr( Add Rows() ) & remove rows, .,
Name Expr( part )
)
);
newtableScript = Substitute( Name Expr( tableScriptList ), Expr( List() ), Expr( New Table() ) );
newtableScript;
Es ist alles andere als ideal.
Das Ersetzen ist ziemlich gefährlich – es ersetzt nicht nur den Ausdruck, den der Benutzer ersetzen wollte, sondern alle passenden Ausdrücke!
zB wird jede Liste, die am Ende des Skripts übrig bleibt, durch New Table () ersetzt!!!
Jede neue Tabelle () in einem Tabellenskript wird durch eine Liste () ersetzt [und dann am Ende durch Neue Tabelle () :]
Kennen Sie eine Problemumgehung, um dies bei JMP zu verhindern?
Ersatzleiter ?
Mit diesem Thema im Hinterkopf habe ich diesen Wunsch niedergeschrieben:
:folded_hands: Ausdrucksindizierung: Lese- und Schreibzugriff
Sobald es verfügbar ist, werde ich das Skript aktualisieren und robuster machen.