変換列を参照するにはどうすればよいですか?送信して変換列を生成するとき列の変換にデータ表, 戻り値として Column への参照を取得します。
送信して変換列を生成するとき列の変換GraphBuilder オブジェクトにアクセスすると、戻り値としてグラフ ビルダーへの参照が返されます。列への参照はありません:(
したがって、この「列」col2 に名前を尋ねても機能しません。
変換列の参照に関する詳細情報はどこで入手できますか?
たとえば、列への確実な参照を取得する方法 (:col2 のようなもの)。
シンボルで列を参照する必要がないのは素晴らしいことです。 列名を使用しても問題ないようです - 引用符なしでも問題ありません (!?)
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");
自動化とスクリプト作成Re: 変換列を参照するにはどうすればよいですか?Jmp サポート: TS-00056243
。プラットフォーム コンテキストで作成された変換列を参照することはできません。つまり、取り外しも交換もできません。変換列への参照が必要な場合は、データ テーブル コンテキストで列を作成する必要があります。
したがって、(プラットフォームで) 変換列を変更または名前変更したい場合は、JSL ではなく GUI を介して行う必要があります。
(# JSL では何ができないのでしょうか?)
ウィッシュは次のように追加しました。
変換列の改善
Re: 変換列を参照するにはどうすればよいですか?その間に ...
唯一の解決策は変換列を生成することのようですテーブルスコープありそして、更新されるたびにそれをプロットに戻す必要があります。
このアイデアを説明するために、選択された M & F をカウントする GraphBuilder プロットを生成しました。
このアプローチがどれほど強力であるかを想像してみてください...
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();
Re: 変換列を参照するにはどうすればよいですか?数式列の生成と比較したこのアプローチの利点は次のとおりです。
- Transform 列は一時的なものであり、保存されません。
匹敵します:
- テーブルスコープを使用して変換列を生成する必要があるため、他のプラットフォームからも参照できます
悪い:
- 実際の数式列を使用したアプローチと比較して、コードがかなり長くなっています。 Re: 列の変換: 除外された行のバグ
実際の数式列の場合、入力リストを更新するだけで十分であり、その後数式が再評価されます。
変換列の場合は、列を削除して再度生成するようなものです。
なぜ?
変換列の場合は、次を使用できます。
<< reset transform()
値を更新します。
しかし、驚くべきことに、変数を削除して追加した後でも、レポートは更新に気付かず、古い値を表示します。

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 ) )
);
新しく生成されたグラフ ビルダー レポート ( gbnew ) は新しい値を示します。
-> 最初のグラフビルダーは、変換列が更新されても更新されないいくつかの保存された値を使用しているようです。
Re: 変換列を参照するにはどうすればよいですか?これは解決策とみなされますか?
うーん...
Jmp サポート [TS-00056243] は非常に明確です。
簡単に言うと、ローカル データ フィルターの変更によって変換列を変更する方法はないということです。
[私たちのうちの 1 人] はこの問題の技術サポートと開発で他の人たちと協力していますが、解決策は見つかりません。
Re: 変換列を参照するにはどうすればいいですか?ローカルデータフィルタの変更によって変換列が変更される方法はありません
まだ ...