<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />외부 프로그램의 데이터를 JMP로 옮기는 방법에 대한 요청이 있었습니다.일반적으로 이를 위해 CSV 파일을 사용하는 것이 좋지만 압축이 문제인 경우 다른 것이 필요할 수도 있습니다.다음은 몇 가지 개념 증명 스크립트입니다( 당신은 그들이 당신이 필요로 하는 일을 하는지 확인해야 할 것입니다 ).외부 프로그램이 없기 때문에 각 스크립트는 테이블에서 zip 파일을 만든 다음 zip 파일에서 테이블을 다시 만드는 두 부분으로 구성됩니다.이는 외부 프로세스가 데이터를 패키지화하여 JMP에 표시하는 방법을 사용자가 제어하고 있다고 가정합니다.
핵심 사항: zip 파일은 바이너리(첫 번째 예) 또는 인쇄 가능한(두 번째 예) 데이터를 저장할 수 있습니다.Jsl MatrixToBlob 및 BlobToMatrix는 빠릅니다.반복하지 말고 몇 개의 열만 반복하세요.많은 행에 대해 모든 행에 대해 반복을 피하십시오.JMP의 zip 파일 API는 새 구성원을 추가하여 실제 이름 이전 멤버를 피하려면…deleteFile()을 주목하세요.zip(za=0)을 지울 필요는 없습니다. 이는 파일이 JMP 외부(디스크)에 있음을 암시합니다.숫자를 인쇄 가능한 숫자로 변환하거나 다시 되돌리는 작업은 속도가 느리며, 형식이 지정된 값의 자릿수가 충분하지 않은 경우에도 손실이 발생할 수 있습니다.
첫 번째 스크립트는 한 번에 한 행씩 "little-endian" 형식으로 zip 파일 멤버에 원시 데이터를 넣습니다.인쇄 가능으로 앞뒤로 변환되지 않기 때문에 빠릅니다.
두 번째 스크립트는 멤버당 하나의 열씩 zip 파일 멤버에 열의 형식화된 데이터를 넣습니다.숫자 데이터는 행렬, 목록의 문자로 들어갑니다.
두 스크립트의 아이디어를 결합할 수 있습니다.
실시예 1
이 예에서는 이진 숫자 데이터를 가정합니다.정말이어야합니다 빠른 .문자 데이터가 이렇게 작동하지 않습니다…
// (이 코드는 테스트되지 않았습니다!) 샘플 숫자 데이터를 만듭니다.
dt = 새 테이블 ( "사람들" , 행 추가 ( 1e7 ) ,
새 열 ( "프레드" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) , 공식 ( 랜덤 노멀 () ) ) ,
새 열 ( "랄프" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) , 공식 ( 랜덤 노멀 () ) ) ,
새 열 ( "성 조지" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) , 공식 ( 랜덤 노멀 () ) , )
) ;
// 바이너리 데이터로 샘플 zip 파일 만들기
데이터매트 = ( dt : 프레드 << getasmatrix ) || ( dt : 랄프 << getasmatrix ) || ( dt : 성 조지 << getasmatrix ) ;
얼룩 = 매트릭스토블롭 ( 데이터매트 , "뜨다" , 8 , "작은" ) ;
자 = 열려 있는 ( "$temp/deleteme2.zip" , "지퍼" ) ;
실제 이름 = 자 << 쓰다 ( "데이터" , 얼룩 ) ;
// 지퍼 지우기
자 = 0 ;
// zip을 다시 엽니다.
자 = 열려 있는 ( "$temp/deleteme2.zip" , "지퍼" ) ;
보여주다 ( 자 << 디렉토리 ) ; //멤버 확인
시작 = 틱초 () ;
블로브 추출 = 자 << 읽다 ( 실제 이름 , 체재 ( 얼룩 )) ;
데이터 추출 = 얼룩 매트릭스 ( 블로브 추출 , "뜨다" , 8 , "작은" , 삼 /*열*/ ) ;
d추출 = 새 테이블 () ;
d추출 << 세트매트릭스 ( 데이터 추출 ) ;
멈추다 = 틱초 () ;
보여주다 ( 멈추다 - 시작 ) ;
중지 - 시작 = 2.01666666666279; // 2~3초 안에 10,000,000개 행 x 3개 열을 압축 해제+로드함
실시예 2
여기에 또 다른 변형이 있습니다. 느리지만 유연한 (숫자 및 문자 처리):
// (이 코드는 테스트되지 않았습니다!) 샘플 수치 데이터 만들기
dt = 새 테이블 ( "사람들" , 행 추가 ( 1e6 ) ,
새 열 ( "프레드" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) , 공식 ( 랜덤 노멀 () ) ) ,
새 열 ( "프레드 차르" , 성격 , 공식 ( 숯 ( 임의의 정수 ( 1000 , 99999 )))) ,
새 열 ( "랄프" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) , 공식 ( 랜덤 노멀 () ) ) ,
새 열 ( "랄프 샤르" , 성격 , 공식 ( 숯 ( 임의의 정수 ( 1000 , 99999 )))) ,
새 열 ( "성 조지" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) , 공식 ( 랜덤 노멀 () ) , ) ,
새 열 ( "조지 차르" , 성격 , 공식 ( 숯 ( 임의의 정수 ( 1000 , 99999 ))))
) ;
dt << 수식 실행 () ;
// 바이너리 데이터로 샘플 zip 파일 만들기
노력하다 ( 파일 삭제 ( "$temp/deleteme.zip" )) ;
자 = 열려 있는 ( "$temp/deleteme.zip" , "지퍼" ) ;
충돌하다 = dt << getcolumn참조 ;
~을 위한 ( 나 = 1 , 나 <= 항목 ( 충돌하다 ) , 나 ++,
데이터 = 충돌하다 [ 나 ] << getasmatrix ;
이름 = 충돌하다 [ 나 ] << getname ;
자 << 쓰다 ( 이름 , 숯 ( 데이터 )) ;
) ;
// 지퍼 지우기
자 = 0 ;
// zip을 다시 엽니다.
시작 = 틱초 () ;
자 = 열려 있는 ( "$temp/deleteme.zip" , "지퍼" ) ;
열 이름 = 자 << 디렉토리 ; //멤버 확인
d추출 = 새 테이블 ( "추출된" ) ;
~을 위한 ( 나 = 1 , 나 <= 항목 ( 열 이름 ) , 나 ++,
txt = 자 << 읽다 ( 열 이름 [ 나 ]) ;
d추출 << 새 열 ( 열 이름 [ 나 ] , 가치 ( 분석하다 ( txt ))) ;
) ;
멈추다 = 틱초 () ;
보여주다 ( 멈추다 - 시작 ) ;
중지 - 시작 = 12.3500000000349; // 12~14초 안에 1,000,000 x 6 압축 해제+로드