こんにちは、みんな、
私は JMP スクリプトの初心者ですが、このフォーラムのほとんどの人にとっては答えるのが非常に簡単な質問が 1 つあります。私が実行しているスクリプトは次のとおりです。
----------------------------------------------------------------------
// Open the raw base data table
raw_data_tbl=open("..\Tables\WA_VS_EXPORT_BASE_VIEW_MKT_1_SAMPLED.jmp");
// Make raw data table the current data table
Current Data Table(raw_data_tbl);
Current Data Table() << Select Where(:Total_interactions >= 1 & :Total_interactions <=40);
raw_data_tbl_sub = Current Data Table() << Subset(columns(
:B_ts,
:B_month,
:B_year,
:C_cd,
:Total_interactions,
:Product,
:T_id,
:Num_interactions,
));
Current Data Table() << Clear Select;
Current Data Table(raw_data_tbl_sub);
// Join the subset table with summary table
chnnl_in_summary = Current Data Table() <<
Join(
With(
Current Data Table() << Summary( Group( :T_id, :C_cd ), N( :Trip_id ) )
),
Select( :B_ts, :B_month, :B_year ),
SelectWith( :T_id, :C_cd ),
Select(
:Total_interactions,
:Product,
:Num_interactions
),
SelectWith( :N Rows ),
By Matching Columns( :T_id = :T_id, :Channel_cd = :Channel_cd ),
Drop multiples( 0, 0 ),
Name( "Include non-matches" )(0, 0)
);
Current Data Table(chnnl_in_summary);
chnnl_in_summary_transp = Current Data Table() << Transpose(
columns( :N Rows ),
By(
:T_id,
:B_ts,
:B_month,
:B_year,
:Total_interactions,
:Product
),
Label( :C_cd )
);
close(raw_data_tbl);
close(raw_data_tbl_sub);
close(chnnl_in_summary);
chnnl_in_summary_transp << save("..\Tables\WA_PATTR.jmp");
close(chnnl_in_summary_transp);
-----------------------------------------------------------------------------------------------
スクリプトは、私が望むようにデータを処理するという点では問題なく動作しますが、プロセス中に作成した中間テーブル用に多数の (実際には合計 3 つの) テーブル ウィンドウが開かれ、煩わしいです。さらに、名前が「Untitled」で始まるテーブルの 1 つを保存するかどうかを尋ねるファイル ダイアログも表示されます。以下は、スクリプト ログ ウィンドウの下部です。
WA_VS_EXPORT_BASE_VIEW_MKT_1_SAMPLED のデータ テーブル サブセットには、他のウィンドウが開いています。このデータ テーブルのすべてのウィンドウを閉じるか、非表示にすることができます。
JMP データ テーブル Untitled 42 への変更を保存しますか?
私の質問は、スクリプトの実行を妨げないように (つまり、必要なときにテーブル全体を閉じないように)、スクリプトが終了するまでにテーブル ウィンドウを含むすべてが閉じられるように、スクリプトからこれらのウィンドウを適切に制御するにはどうすればよいかということです。どうやら、テーブルに送信される閉じるメッセージだけでは不十分のようです。回答をいただければ幸いです。
ミロラド
上記の通り、
closeコマンドの使用は正しいです。ダイアログを非表示にするには、close関数内で保存しないように指定できます。つまり、元のテーブルの場合は次のようにします。
close(raw_data_tbl,nosave);
そして:
JSLにはINVISIBLEというキーワードがあります。これは様々なコンテキストで使用できます。使い方に慣れるには、『JMPスクリプトガイド』(ヘルプブック)を開いて「invisible」を検索するのが最適です。
たとえば、コードに関しては次の操作を実行できます。
Current Data Table() << Select Where( ... );
subsetTable = Current Data Table << Subset( invisible );