こんにちは!
1つのファイルを開いただけでも、コンピュータのメモリを大量に消費する大きなファイルを作成しています... PCの動作が遅くなったり、ハングアップすることがあります。単一のファイルを開く前に小さなファイルにまとめることができるjslソリューションがあるかどうか疑問に思っていました... File_A = 2GBのように、それぞれ250MBの4つの小さなファイルにまとめられます。私はそれから各チャンクファイルのオープンと集約/計算を自動化し、オープンチャンクファイルをクローズし、そして処理される次のチャンクファイルに結果を連結します。それからループが続きます。
進んでくれてありがとう。
分割する前にメモリにテーブルをロードしたくない場合は、データをロードする方法を工夫することができます。 フラットファイルの場合は、ループ内で読み込む開始位置と行数を指定します。
dtProbe = Open("$SAMPLE_DATA/Probe.jmp");
dtProbe << save( "$temp/deleteme123.txt" );
for( i = 1, i <= 2, i++,
dt = Open(
"$temp/deleteme123.txt",
columns(
New Column( "security to create", Character, "Nominal" ),
New Column( "resource", Character, "Nominal" ),
New Column( "group", Character, "Nominal" ),
New Column( "(ADM V-net)", Character, "Nominal" )
),
Import Settings(
Fixed Column Widths( 19, 9, 6, 105 ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 0 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 1 + 100 * (i - 1) ),
Lines To Read( 100 ),
Year Rule( "20xx" )
)
)
); @Nalla :
また、これがこのデータの処理を高速化できる唯一の方法ではないことを付け加えたいと思います。テーブルを「非表示」または「非公開」にすると、プロセスが大幅にスピードアップします。
dt << Show Window(0);
@Nalla :
こんにちは、これは確かにできます。
スクリプティングインデックスの「サブセット」関数を見てください - これはあなたがあなたの大きなデータテーブルのより小さなサブセットを形成するのを助けるでしょう。これが例です。その後、"Concat"を使用してテーブルに参加できます。
// Lets start with the assumption that there are 1000 rows in dt table
// Also say you want to subset n rows in each iteration ;
LL = 1;
UL = 250 ;
for(i = 1 , i <= 4 , i ++,
LL = LL * i ;
UL = UL * i ;
dt << Select Rows(Index(LL,UL,1)); // Assuming "dt" is your master table
dt1 = dt << Subset("Private",Selected Rows(1),Selected Columns(0));<BR /> LL = UL;
);