문자열을 데이터 테이블로(코드 최적화)루프 내의 .exe 파일은 (효율적으로) 데이터 테이블로 변환해야 하는 문자열을 반환합니다.
문자열에는 다음과 같은 특징이 있습니다.
- 행은 "\n" 문자로 제한되지만 필요한 경우 변경할 수 있습니다.
- 열은 ","로 제한됩니다.
- 구걸과 문자열 끝에는 제거해야 하는 행이 있습니다.
- datetime 행은 다를 수 있습니다. 이 예에서는 7개를 볼 수 있지만 최대 100k 행까지 갈 수 있습니다.
- 이 작업은 수백 순서로 루프 내에서 반복됩니다(문자열은 다르지만 행 수는 동일).
str_query =
"*> mycolumnname
1,mycolumnname,50.,mycolumdescription,mycolumnunits
* End exe...
*> mycolumnname, 31-Jan-2020 14:30:00, 31-Jan-2020 15:30:00, blabla, 7
31-Jan-20 14:30:00,mycolumnname,10.60466
31-Jan-20 14:40:00,mycolumnname,10.60466
31-Jan-20 14:50:00,mycolumnname,10.60466
31-Jan-20 15:00:00,mycolumnname,10.60466
31-Jan-20 15:10:00,mycolumnname,10.60466
31-Jan-20 15:20:00,mycolumnname,10.60466
31-Jan-20 15:30:00,mycolumnname,10.60466
* End exe...
...
...
...
...
";
이 문자열을 다음(누적) 형식의 데이터 테이블로 변환하려면 어떻게 해야 합니까?
31-Jan-20 14:30:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
31-Jan-20 14:40:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
31-Jan-20 14:50:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
31-Jan-20 15:00:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
31-Jan-20 15:10:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
31-Jan-20 15:20:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
31-Jan-20 15:30:00,mycolumnname,10.60466,mycolumdescription,mycolumnunits
어떤 JSL 함수가 이러한 문자열 대 데이터 테이블 작업을 효율적으로 관리할 수 있습니까(메모리 및/또는 CPU 측면?).
다중 스레딩 또는 다중 처리를 사용할 수 없습니다. 데이터베이스를 쿼리하는 중입니다.
Re: 문자열을 데이터 테이블로(코드 최적화)FN,
Craig의 접근 방식을 시도했는지 궁금하십니까? 귀하의 예에서 효과가 있었습니까?
-비
Re: 문자열을 데이터 테이블로(코드 최적화)...열린 문에 CSV 매개변수를 계속 전달할 수 있습니다. 출력의 시작 부분에 수정할 수 없는 추가 줄이 있는 경우 첫 번째 데이터 줄, 열 이름의 존재 및 사용할 데이터 유형에 대해 open 문에 알릴 수 있습니다. 데이터가 몇 줄 이상인 경우 JMP가 형식을 추측하기 위해 추가 패스를 만들지 않도록 소스 스크립트에 있는 모든 것을 JMP에 알리는 것이 눈에 띄게 빠를 수 있습니다. 소스 스크립트는 이미 가져온 JMP 테이블에서 찾을 수 있습니다.
Re: 문자열을 데이터 테이블로(코드 최적화)시원한! RunProgram은 Blob을 반환할 수 있습니다. open() 함수는 파일 이름 대신 blob을 허용할 수 있습니다. 외부 프로그램이 CSV를 인쇄 출력(stdout에서)으로 생성할 수 있다면 제대로 작동할 것입니다.
예: https://community.jmp.com/t5/Discussions/Load-CSV-from-variable/mp/208453
Re: 문자열을 데이터 테이블로(코드 최적화)예, 거의 CSV 형식의 문자열이며 출력을 어느 정도 조정할 수 있습니다.
현재 코드는 RunProgram()을 사용하여 출력 문자열을 가져온 다음 Words()를 사용하여 목록을 얻은 다음 TextToColumns()를 사용합니다.
문자열을 직접 Open()할 수 있습니까? open은 파일 전용인 것 같으며 이상적으로는 피해야 합니다.
Re: 문자열을 데이터 테이블로(코드 최적화)형식은 CSV 파일과 매우 유사합니다. open() 함수는 CSV 데이터를 이해하며 열과 데이터 유형에 대한 충분한 정보를 제공하면 매우 효율적일 수 있습니다(개발 시간과 대기 시간 모두).
.exe 프로그램에서 JMP로 데이터를 가져오는 방법은 무엇입니까? (플랫 파일? runProgram()? open()? 다른 것?)
Re: 문자열을 데이터 테이블로(코드 최적화)두 부분을 목록에 넣는 것이 시작하는 방법일까요?
clear globals();
query =
"*> mycolumnname 1,mycolumnname,50.,mycolumdescription,mycolumnunits
* End exe...
*> mycolumnname, 31-Jan-2020 14:30:00, 31-Jan-2020 15:30:00, blabla, 7
31-Jan-20 14:30:00,mycolumnname,10.60466
31-Jan-20 14:40:00,mycolumnname,10.60466
31-Jan-20 14:50:00,mycolumnname,10.60466
31-Jan-20 15:00:00,mycolumnname,10.60466
31-Jan-20 15:10:00,mycolumnname,10.60466
31-Jan-20 15:20:00,mycolumnname,10.60466
31-Jan-20 15:30:00,mycolumnname,10.60466
* End exe...
...
...
...
...
";
query=Substitute( query, "*> mycolumnname ", "colnames=list(" );
query=Substitute( query, "* End exe...", ");" );
query=Substitute( query, "*> mycolumnname, ", "coldata=list(" );
query=Substitute( query, "* End exe...", ");" );
for(i=1, i<=5, i++, query=Substitute( query, "...", "" ));
show(query);<BR /><BR />
당신은 무엇을 시도 했습니까?