특정 열만 Open()하는 방법안녕하세요. 큰 JMP 데이터 테이블이 있는 경우 특정 열에만 로드되는 Open()에 메시지를 보낼 수 있는 방법이 있습니까? 이렇게 하면 대용량 파일의 파일 로딩 시간이 크게 단축됩니다. 예를 들어 다음 파일이 있는 경우:
Open("c:\temp\fruit.jmp");
Fruit.jmp에 다양한 과일 유형의 200개 열이 포함되어 있고 이 모든 항목에 액세스해야 할 수도 있지만 지금은 "Apple" 열 하나만 로드하면 되므로 파일 로드 시간이 단축됩니다. 후속 Subset()을 수행하면 큰 데이터 파일을 먼저 열어야 하고 여기서 목표는 필요한 열만 로드하여 파일 로드 시간을 줄이는 것이기 때문에 목적이 무산됩니다. 나는 다음과 같은 것이 작동하기를 바랐지만 물론 작동하지 않습니다.
Open("c:\temp\fruit.jmp",columns("Apple"));
제안? 고마워... 디제이
특정 열만 Open()하는 방법좋아, 내 생각엔 내가 이걸 알아낸 것 같아. 그러다가 예전에 도움이 되었던 글을 찾았습니다. 스크립팅 가이드에서 모든 Open() 속성을 검색했는데 대신 Open Database() 명령을 사용하지 않고서는 이 작업을 수행할 수 있는 방법이 없습니다. 기본적으로 먼저 소스 .jmp를 .xls 파일로 변환하면 됩니다. 다른 사람에게 도움이 될 수 있도록 이 글을 게시하고 싶었습니다. 디제이
http://communities.sas.com/message/50379#50379
먼저 "fruit.jmp"를 "fruit.xls"로 변환합니다. 이렇게 하면 JSL이 Excel ODBC DSN 연결과 약간의 SQL 코드를 사용하여 필요한 열만 가져오도록 할 수 있습니다. 따라서 내 Excel 데이터 테이블에 "Sheet1" 워크시트가 있고 그 안에 "Apple"이라는 열이 있고 시간을 절약하기 위해 이 열만 로드하고 이 워크시트의 다른 열은 로드하지 않으려고 한다고 가정해 보겠습니다. 아래 코드는 트릭을 수행합니다.
dt=데이터베이스 열기("DSN=Excel Files;DBQ=c:\temp\fruit.xls;DriverId=790;MaxBufferSize=2048;PageTimeout=5;","`Sheet1$`에서 Apple 선택" , "과일 테이블" );