Können Sie Spaltenformeln durchsuchen?Ich habe eine Datentabelle mit mehreren hundert Spalten. Ich möchte alle Spaltenformeln durchsuchen können, um zu sehen, ob eine bestimmte Spalte in einer der Spaltenformeln verwendet wird. Ist das möglich?
Datenzusammenführung und -bereinigungBetreff: Können Spaltenformeln durchsucht werden?Ja......
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "/C:/Program Files/JMP/JMPPRO/19/Samples/Data/Big Class.jmp" );
dt << new column("Ratio", formula(:height/:weight));
theFormula = Char(dt:Ratio << get formula);
If( contains(theFormula, "height"), show("found it"));Betreff: Können Spaltenformeln durchsucht werden?Wenn Sie Zugriff auf JMP Pro haben, können Sie dies mit Formula Depot tun.

Sie können die Formelspalten auswählen, Spalten kopieren auswählen, ein neues Skript öffnen (Strg + T) und dort einfügen. Suchen Sie dann im Skripteditor.
Sie können auch versuchen, diese Spalte zu entfernen. Wenn sie verwendet wird, zeigt JMP eine Warnung wie diese an.

Bearbeiten:
Es könnte auch eine Möglichkeit in JMP18 geben, den Columns Manager zu verwenden, aber ich könnte mir eine ausdenken. Data Dictionary kann das fast, aber es speichert die Formeln als Bilder, sodass sie nicht einfach durchsucht werden können

Und natürlich gibt es jede Menge reine Scripting-Optionen
Betreff: Können Spaltenformeln durchsucht werden?Jim,
Danke dafür. Da ich im Scripting derzeit wirklich schlecht bin, könnten Sie mir zeigen, wie ich Ihren Algorithmus alle Spalten einer Datentabelle durchlaufen lassen und eine Liste der Spalten ausgeben kann, die den Zielwert enthalten?
Jarmo,
Leider habe ich kein JMP Pro. Aus irgendeinem Grund wird in der Fehlermeldung, die ich beim Versuch, die Spalte zu löschen, erhalte, die Spalte mit der Formel nicht aufgeführt. Ich weiß nicht, warum. Ich dachte auch, dass das Datenwörterbuch helfen könnte, aber als ich es mir angeschaut habe, konnte ich nicht erkennen, wie. Trotzdem danke für die Hilfe.
Betreff: Können Spaltenformeln durchsucht werden?Ich habe auch eine weitere Option geteilt, die nicht von JMP Pro abhängig ist
Sie können die Formelspalten auswählen, Spalten kopieren auswählen, ein neues Skript öffnen (Strg + T) und dort einfügen. Suchen Sie dann im Skripteditor.


Betreff: Können Spaltenformeln durchsucht werden?Ohhhh ... Das ist cool. Ich wusste nicht, dass man eine Spalte in den Skripteditor einfügen kann.
Ich denke, das wird funktionieren.
Danke!
Betreff: Können Spaltenformeln durchsucht werden?Ähnlich wie bei @jthis Vorschlag, das Skript jeder Spalte zu kopieren, können Sie das Skript der gesamten Tabelle ohne die Daten kopieren, indem Sie auf das rote Dreieck (oben links in der Tabelle) > Tabellenskript kopieren (keine Daten) klicken.

Das Skript enthält das JSL zum Neuerstellen Ihrer Tabelle, das alle Ihre Spaltenformeln enthält. Fügen Sie das Skript in ein Skriptfenster ein und starten Sie die Suche von dort aus.
Ich hoffe das hilft!
@julianisch
Betreff: Können Spaltenformeln durchsucht werden?@julian, vielleicht könnte diese Art der Suche in irgendeiner Form in den Spaltenmanager implementiert werden? So könnten wir auch nach den Werten in den Spalteneigenschaften suchen, anstatt nur nach denen mit bestimmten Eigenschaften zu filtern. Zumindest Formel, Notizen und kurze/lange Spaltennamen sind einige Spalteneigenschaften, bei denen es möglicherweise von Vorteil wäre, wenn wir danach suchen könnten.
Betreff: Können Spaltenformeln durchsucht werden?Mir gefällt es – der Spalten-Manager scheint dafür der natürliche Ort zu sein. Ich habe auch darüber nachgedacht, wie es im normalen Suchdialog funktionieren könnte, wenn es ein weiteres Kontrollkästchen gäbe, um „In Spalteneigenschaften suchen“ anzubieten.Betreff: Können Spaltenformeln durchsucht werden?Ich habe mit @julians Idee angefangen, das Tabellenskript zu verwenden und einige Funktionen hinzugefügt, um
- Suche nach Spalten in den Formeln und
- um die Suchergebnisse anzuzeigen:
//Open( "$SAMPLE_DATA/Ship Damage.jmp" );
// get all column formulas via the table script
dt = Current Data Table();
dt << copy table script( "No Data" );
script = Parse( Get Clipboard() );
//convert to List for easier indexing
Substitute Into( script, Expr( New Table() ), Expr( {} ) );
// just keep the columns
allCols = Filter Each( {col}, script, Head( col ) == Expr( New Column() ) );
// convert column info into lists
ColList = Transform Each( {col}, allCols, Substitute( Name Expr( col ), Expr( New Column() ), Expr( {} ) ) );
allColNames = Transform Each( {col}, ColList, tmp = Arg( col, 1 ); If (is string(tmp), tmp, tmp["en"]) );
// keep columns with formulas
ColsWithFormulas = Filter Each( {col}, ColList,Try(col["Formula"]; 1 , 0 ));
ColNames = Transform Each( {col}, ColsWithFormulas, tmp = Arg( col, 1 ); If (is string(tmp), tmp, tmp["en"]) );
ColFormulas = Transform Each( {col}, ColsWithFormulas, col["Formula"] );
// helper function to search for column names in formulas
ContainsExpr = Function( {expression, pattern},
tmp = Substitute( Name Expr( expression ), Name Expr( pattern ), Expr( . ) );
Not( Name Expr( tmp ) == Name Expr( expression ) );
);
summary = New Table("Formuala Overview",
New Column( "column Formula", Character ),
New Column( "used cols", Character ),
);
wait(0);
// fill the summary tale with all combinations of formulas and the used columns
Current Data Table( dt ); // make dt the current data table, otherwise <AS column=""> won't work !
For Each( {myFormula, idx1}, ColFormulas,
For Each( {col}, allColNames,
formulaCol = ColNames[idx1];
dt:formulaCol << Set Header Text Color( "Red" );
If( ContainsExpr( Name Expr( myFormula ), Name Expr( As Column( col ) ) ),
Eval( Eval Expr( summary << add row( {"column Formula"n =Expr(formulaCol ), "used cols"n = Expr( col )} ) ) );
Column(col) << Set Header Background Color( {102, 255, 140} );
)
)
);
// show a tabulate for easy look up
summary << Tabulate(
Show Control Panel( 0 ),
Add Table( Row Table( Grouping Columns( :column Formula, :used cols ) ) ),
Local Data Filter( Mode( Show( 0 ) ), Add Filter( columns( :column Formula, :used cols ) ) )
);</AS>Betreff: Können Spaltenformeln durchsucht werden?neben dem Ansatz, in Formeln verwendete Spalten über die Spaltenhintergrundfarbe hervorzuheben,
Man könnte darüber nachdenken, ein Indikatorsymbol für Spalten hinzuzufügen, die in Formeln verwendet werden
Betreff: Können Spaltenformeln durchsucht werden?@hogi, das ist brillant.