텍스트 파일에서 데이터 가져오기 문제텍스트 파일에서 데이터를 가져오는 데 문제가 있습니다. 현재 일부 열에 대해 오류 메시지가 표시됩니다("열을 가져오는 동안 잘못된 데이터가 발생했습니다... 해당 열의 데이터 유형을 문자로 명시적으로 설정하여 데이터를 다시 가져오십시오").
더 명확하게 설명하자면, 데이터베이스에서 대량의 데이터를 추출하는 데 사용되는 JMP 스크립트가 있습니다. 추출 후, 데이터는 각 데이터 인스턴스에 대해 열과 행으로 매개변수를 사용하여 정리됩니다. 이러한 매개변수는 모두 범주형이지만, 숫자형도 많고(날짜 형식으로 된 것도 많습니다) 몇 년 전, 모든 열을 적절한 데이터 유형으로 변환하는 성능(시간)을 개선해 달라고 요청했습니다. (JMP 스크립트를 사용하면 수천 개의 열이 필요하기 때문에 시간이 많이 걸렸습니다.)
짐 넬슨 씨는 표를 텍스트 파일로 저장한 후 다시 열어 보라고 제안했습니다. 이 방법은 잘 작동하여 성능이 크게 향상되었고, 모든 열이 숫자로 변환되었으며 날짜 형식의 날짜 형식도 그대로 유지되었습니다.
이제 이 방법은 더 이상 작동하지 않으며, 창 경고가 나타나 실행이 중단됩니다.
저는 커뮤니티를 살펴보았고, 제안된 방법 중 하나를 시도해 보았습니다.
collist = dt << Get Column Names("String");
For Each({colname}, collist,
r = Column(dt, colname) << Set Data Type("Numeric", << Fail On Conversion Error, <
<RETURN failed="" rows=""></RETURN>
<P>이 방법은 날짜 서식을 잃어버리기 때문에 좋지 않습니다. 즉, 날짜가 표시되어야 하는 열이 숫자 서식으로 나타납니다.</P> <P>누군가 해결 방법을 제안해 줄 수 있나요?</P>
<LINGO-LABS id="lingo-labs-909378" slang="en-US" mode="CREATE">
<LINGO-LABEL>자동화 및 스크립팅</LINGO-LABEL>
</LINGO-LABS>
Re: 텍스트 파일에서 데이터 가져오기 문제무엇이 바뀌어서 프로세스가 작동하지 않게 되었나요?
어떤 버전의 JMP를 사용하고 계신가요?
어떤 운영체제인가요?
읽고 있는 텍스트 파일의 샘플과 해당 작업에 사용하고 있는 JSL을 제공해 주실 수 있나요?
Re: 텍스트 파일에서 데이터 가져오기 문제I'm using JMP PRO ver 18.0.0 (JMP normal show the same behavior).
Operating system : Windows 10 Enterprise
What I changed is the instruction open("C:\TEMP\jmp_conversion.csv", columns(LOT_ID=character), scan whole file(1));
where I added the clause columns(LOT_ID=character). Without this change it works (but in some specific case the lot_id is converted numeric in scientific notation: the reason for the change).
Consider that if you run just the following script you do not receive the blocking alert but a message in the log. (I don't know why)
numeric_conversion = function({dt},{Default Local},
n= dt << get name();
try(delete file("C:\TEMP\jmp_conversion.csv"));
dt << save as("C:\TEMP\jmp_conversion.csv");
close(dt,nosave);
try(
dt= open("C:\TEMP\jmp_conversion.csv", columns(LOT_ID=character), scan whole file(1));
);
dt << set name(n);
return(dt);
);
dt= data table("ExtractedData");
dt = dt << split(
split( :VALUE ),
split by( :PARAM ),
group( :LOT_ID, :WAFER_NO ),
remaining Columns( Keep All ),
);
dt = numeric_conversion(dt);
Re: 텍스트 파일에서 데이터 가져오기 문제스크립트는 잘 작동하며 JMP는 로그 메시지의 이유를 알려줍니다.
Invalid data encountered while importing the column Reactor.
25 values were set to missing.
Try importing the data again, but explicitly set the Data Type of those columns to Character.
이는 Reactor 열에 문자 값이 누락되었기 때문입니다. 이를 방지하려면 Open을 Log Capture()로 래핑할 수 있습니다.
Names Default To Here(1);
numeric_conversion = Function({dt_split}, {Default Local},
n = dt_split << get name();
Try(Delete File("C:\TEMP\jmp_conversion.csv"));
dt_split << Save As("C:\TEMP\jmp_conversion.csv");
Close(dt_split, nosave);
Log Capture(dt_split = Open("C:\TEMP\jmp_conversion.csv", columns(LOT_ID = character), scan whole file(1)));
dt_split << set name(n);
Return(dt_split);
);
dt = Open("$DOWNLOADS/ExtractedData.jmp");
dt_split = dt << split(split(:VALUE), split by(:PARAM), group(:LOT_ID, :WAFER_NO), remaining Columns(Keep All), Output table("ExtractedData Split"));
Close(dt, no save);
dt_split = numeric_conversion(dt_split);