안녕하세요!
나는 하나의 파일을 열었을 때 많은 양의 컴퓨터 메모리를 사용하는 대용량 파일 작업을하고 있는데 ... 내 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" )
)
)
); @ 나라 :
또한이 데이터 처리 속도를 높일 수있는 유일한 방법이 아니라고 덧붙이고 싶습니다. 테이블을 "보이지 않게"또는 "비공개로"만들면 프로세스가 크게 빨라질 수 있습니다.
dt << Show Window(0);
@ 나라 :
안녕하세요, 확실히 할 수 있습니다.
Scripting Index에서 "Subset"기능을 살펴보십시오. 그러면 큰 데이터 테이블의 작은 하위 세트를 구성하는 데 도움이됩니다. 다음은 그 예입니다. 그런 다음 "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;
);