テキストファイルからのデータのインポートの問題テキストファイルからのデータのインポートに問題が発生しています。現在、一部の列でエラーメッセージが表示されます(「列のインポート中に無効なデータが検出されました… データのインポートを再度お試しください。ただし、該当の列のデータ型を明示的に文字に設定してください。」)。
より明確に説明すると、データベースから大量のデータを抽出するために使用されるJMPスクリプトがあります。抽出後、データは各インスタンスごとに列と行にパラメータで整理されます。これらのパラメータはすべてカテゴリ型ですが、数値型も多く、多くは日付型です。数年前、すべての列を適切なデータ型に変換する際のパフォーマンス(時間)を改善するために支援を依頼しました(JMPスクリプトでは、数千の列を扱うため、非常に時間がかかりました)。
Jim Nelson 氏は、テーブルをテキストファイルとして保存してから再度開くことを提案しました。これはうまく機能し、パフォーマンスが大幅に向上しました。すべての列が数値に変換され、日付の列の日付形式は維持されました。
現在、これはもう機能せず、ウィンドウアラートが実行を停止します。
コミュニティを調べて、提案された方法を 1 つ試しました。
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);