JSL スクリプトのデータ フィルターの実行が遅いデータフィルターを利用して「ITEM_NAME」列から約180件のテストを選択し、新しいテーブルを作成するJSLスクリプトを作成しようとしています。データフィルターを使用して手動で実行すると、遅延は発生しません。しかし、プロセスを自動化しようとすると、新しいテーブルの作成に約15分かかります。より効率的に実行するにはどうすればよいでしょうか?
Open( "$DOCUMENTS/test.jmp" );
ref10 = Data Table( "ABC" ) << Select Where(
:ITEM_NAME == "test1" |
:ITEM_NAME == "test2" |
:ITEM_NAME =="test3" |
:ITEM_NAME ==
...
"test180"
) << Data View;
Data Table( ref10 ) << Save(
"$DOCUMENTS/filtered.jmp"
);
自動化とスクリプトRe: JSL スクリプトのデータフィルターの実行速度が遅いこれを試してみて
Open( "$DOCUMENTS/test.jmp" );
items={"test1" "test2""test3"..........};
ref10 = Data Table( "ABC" ) << Select Where(
contains(ITEMS) ) << Data View;
Data Table( ref10 ) << Save(
"$DOCUMENTS/filtered.jmp"
);
Re: JSL スクリプトのデータフィルターの実行速度が遅いジムさん、ありがとうございます。何らかの理由でエラーが発生しています(おそらく構文関連です)。
Re: JSL スクリプトのデータフィルターの実行速度が遅い実行速度が速くなったようで、完了まで3~4分ほどかかりましたが、手動で実行した場合ほど速くはありませんでした。エラーを回避するために、コードを少し変更する必要がありました。
Open( "$DOCUMENTS/test.jmp" );
items={"test1", "test2", "test3"..........};
ref10 = Data Table( "ABC" ) << Select Where(
contains(items, ITEM_NAME) ) << Data View;
Data Table( ref10 ) << Save(
"$DOCUMENTS/filtered.jmp"
);
Re: JSL スクリプトのデータフィルターの実行速度が遅い私のミスです…夜遅かったんです…
Re: JSL スクリプトのデータフィルターの実行速度が遅いデータを確認/理解せずにスクリプトがなぜそれほど遅くなるのか理解するのは少し難しいです (そうであるべきではありません)。
これらの行を選択する代わりに、<< Get Rows Where と Subset を使ってみてください。この例では、リンクされたサブセットと無題の出力テーブル名を使用してデータビューを複製しようとしました。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
items = {12, 13, 14, 15};
rows_of_interest = dt << get rows where(Contains(items, :age));
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Link to original data table(1), Output Table("Untitled"));
Re: JSL スクリプトのデータフィルターの実行速度が遅いJarmoさん、ありがとうございます。あなたの解決策のおかげで、処理時間が約1分35秒まで短縮されました。
私が使用しているJMPテーブルには13列、13127825個の生データがあります。出力ファイルには1274416個の生データがあります。
Re: JSL スクリプトのデータフィルターの実行速度が遅いおそらく最適化は実行できるでしょうが、その速度がアプリケーションに十分であれば、それについては心配する必要はありません。