Wie verweise ich auf eine Transformationsspalte?Wenn ich durch Senden eine Transformationsspalte erzeuge Spalte transformieren zu einem Datentabelle , erhalte ich einen Verweis auf die Spalte als Rückgabewert.
Wenn ich durch Senden eine Transformationsspalte erzeuge Spalte transformieren zu einem GraphBuilder-Objekt erhalte ich einen Verweis auf einen Graph Builder als Rückgabewert – keinen Verweis auf die Spalte 
Es funktioniert also nicht, diese „Spalte“ col2 nach ihrem Namen zu fragen.
Wo finde ich weitere Informationen zum Referenzieren von Transformationsspalten?
zB wie man einen soliden Verweis auf die Spalte erhält (etwa: col2).
Wie gut, dass man die Spalte nicht durch ein Symbol referenzieren muss. Scheint in Ordnung zu sein, den Spaltennamen zu verwenden – auch ohne Anführungszeichen (!?).
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder();
col1 = dt << Transform Column ("col1Name", Formula(1/:height));
col2 = gb << Transform Column ("col2Name", Formula(1/:height));
Show(Name Expr(col1));
Show(Name Expr(col2));
gb << Variables(X(:height), Y (col1));
// doesnt work :(
gb << Variables(X(:height), Y (col2));
gb << Variables(X(:height), Y ("col2Name")); //works
gb << Variables(X(:height), Y (col2Name)); // works (!?)
Show(col1 << get name());
Show(col2 << get name());
Show(Column(dt, "col1Name"));
Try(Show(Column(dt, "col2Name")), "dt doesn't know the column");
Automatisierung und SkripterstellungBetreff: Wie verweise ich auf eine Transformationsspalte?Jmp-Unterstützung: TS-00056243
. Sie können nicht auf eine Transformationsspalte verweisen, die im Plattformkontext erstellt wurde.Das bedeutet, dass Sie es weder entfernen noch ersetzen können.Wenn Sie einen Verweis auf eine Transformationsspalte haben möchten, müssen Sie die Spalte im Datentabellenkontext erstellen.
Wenn Sie also eine Transformationsspalte (in einer Plattform) ändern oder umbenennen möchten, müssen Sie dies über die GUI tun – nicht über JSL.
(# Was ist über JSL nicht möglich?)
Wunsch hinzugefügt:
Verbesserungen für die Transformationsspalte
Betreff: Wie verweise ich auf eine Transformationsspalte?In der Zwischenzeit ...
Die einzige Lösung scheint darin zu bestehen, die Transformationsspalte zu generieren mit Tabellenumfang und es bei jeder Aktualisierung wieder in den Plot einzufügen.
Um die Idee zu veranschaulichen, habe ich ein GraphBuilder-Diagramm erstellt, das die ausgewählten M und F zählt.
Stellen Sie sich vor, wie wirkungsvoll dieser Ansatz sein kann ...
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
colName = "count_"||Char(Random Integer(100000));
Eval(Eval Expr(gb = dt << Graph Builder(
Transform Column(
Expr(colName),
"Table Scope", // essential because otherwise the replace(1) won't work
Formula( Col Number( 1,:sex ) )
),
Variables( X( :sex ), Y( Expr(colName) ) ),
Elements( Bar( X, Y ) ),
Local Data Filter(Add Filter(columns( :sex, :name )))
)));
ldf = (Current Report()["Local Data Filter"] << get scriptable object);
myRowsOld=[];
fch = Function( {x},
myRows = ldf << Get Filtered Rows;
If( not(nrows(myRows)==nrows(myRowsOld))| not(asList(myRows) == asList(myRowsOld)),
myRowsOld = myRows;
Eval(
Substitute(
Expr(
dt << Transform Column(
_colName_,
//"Table Scope", // gb doesn't understand replace(1) -> we have to talk to the table -> no Table Scope needed
Formula(
Col Number( 1, :sex, Contains( _myRows_, Row() ) > 0 )
),
Replace( 1 )
)
),
Expr( _myRows_ ), myRows, Expr(_colName_), colName
)
);
gb << add variable({ Column(colName), Role("Y") }); //replacing the transform column removes it automatically from the graph
dt << Show Transforms();
);
);
current report() << on close(dt << delete column(colname));
rs = ldf << Make Filter Change Handler( fch );
dt << Show Transforms();
Betreff: Wie verweise ich auf eine Transformationsspalte?Vorteil dieses Ansatzes im Vergleich zur Generierung einer Formelspalte:
- Die Spalte „Transformieren“ ist nur temporär und wird nicht gespeichert.
vergleichbar:
- Da die Transformationsspalte im Tabellenbereich generiert werden muss, ist sie auch auf anderen Plattformen sichtbar
schlechter:
- Der Code wurde im Vergleich zum Ansatz mit einer echten Formelspalte ziemlich lang: Betreff: Spalte transformieren: Fehler bei ausgeschlossenen Zeilen
Für eine echte Formelspalte reicht es aus, die Eingabeliste zu aktualisieren und die Formel wird dann neu ausgewertet.
Mit der Transformationsspalte ist es so, als würde man die Spalte löschen und erneut generieren.
Warum?
Für Transformationsspalten kann man verwenden
<< reset transform()
um die Werte zu aktualisieren.
aber überraschenderweise bemerkt der Bericht die Aktualisierung nicht und zeigt die alten Werte an – auch nach dem Entfernen und Hinzufügen der Variablen:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// transform column with table scope
global:a = 2;
dt << Transform Column(
"sqrt[height]",
Formula( global:a * Sqrt( :height ) ),
Replace(1);
);
Show( :"sqrt[height]"n[1] );
gb = Graph Builder(
Variables( X( :height ), Y( :"sqrt[height]"n ) )
);
global:a = 30;
// clear the cache
:"sqrt[height]"n << Reset Transform();
// new values
Show( :"sqrt[height]"n[1] );
wait(2);
// try to update the GraphBuilder
gb << remove variable(2);
wait(2);
// unfortunately, still the old values !?!?!
gb << add variable({:"sqrt[height]"n, Role("Y")});
// a new GraphBuilder starts with updated values !
gbnew = Graph Builder(
Variables( X( :height ), Y( :"sqrt[height]"n ) )
);
Ein neu generierter Graph Builder-Bericht ( gbnew ) zeigt die neuen Werte an.
-> Scheint, dass der erste Diagrammersteller einige gespeicherte Werte verwendet, die nicht aktualisiert werden, wenn die Transformationsspalte aktualisiert wird.
Betreff: Wie verweise ich auf eine Transformationsspalte?Zählt das als Lösung?
Hm...
Die Jmp-Unterstützung [TS-00056243] ist sehr klar:
Die kurze Antwort lautet: Es gibt keine Möglichkeit, die Transformationsspalte mit einer Änderung am lokalen Datenfilter zu ändern
[einer von uns] hat mit anderen im technischen Support und in der Entwicklung an dem Problem gearbeitet, und es gibt keine Lösung.
Betreff: Wie verweist man auf eine Transform-Spalte?keine Möglichkeit, die Transformationsspalte bei einer Änderung des lokalen Datenfilters zu ändern
Noch nicht ...