csv 가져오기 및 일부 열의 형식만 변경가져와야 하는 csv 파일이 있고 소프트웨어 버전과 관련된 필드가 몇 개 있습니다. 그러나 그들은 xyz와 같은 csv에 있으며 따옴표로 캡슐화되어 있지 않으므로 JMP는 이를 숫자 데이터 유형으로 가져오려고 합니다. 그렇게 할 때 JMP는 숫자를 날짜로 믿고 날짜로 변환하므로 사용 가능한 버전으로 다시 변환하기가 매우 어렵습니다.
파일을 수동으로 가져오는 경우 미리 보기를 사용하여 필요한 열을 원하는 데이터 유형으로 강제 실행할 수 있습니다. 그러나 결과 가져오기 스크립트에는 모든 단일 열에 대해 'new column()'이 있으며 JMP가 파일을 가져오도록 전체를 생략하거나 일부 가져오기를 제어할 수 있도록 186개 열을 모두 나열해야 합니다.
실제 문제는 이러한 파일 중 일부에 다른 열이 있다는 것입니다... 일부는 공통이고 일부는 그렇지 않지만 모든 경우에 버전 열은 공통이며 가져오는 방법을 제어해야 합니다.
아래는 내가 할 수 있고 싶은 것(또는 이와 유사한 것)이지만 총 열 수는 실제로 186입니다...
Open(
filepath,
columns(
New Column( "ALGORITHM_VERSION", Character, "Nominal" ),
New Column( "CLUST_ALG_VERSION", Character, "Nominal" ),
New Column( "CYTOFILEIO_VERSION", Character, "Nominal" ),
New Column( "RELEASE_VERSION", Character, "Nominal" )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
스크립팅Re: csv를 가져오고 일부 열의 형식만 변경합니다.다음은 열을 문자로 적절하게 변경하기 위해 작동해야 하는 스크립트입니다.
Names Default To Here( 1 );
dt = Open(
filepath,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
For( i = 1, i <= N Cols( dt ), i++,
If(
Contains(
Uppercase( Column( dt, i ) << get name ),
"_VERSION"
) & Column( dt, i ) << get data type == "Numeric",
Column( dt, i ) << set format( "Fixed Dec", 18, 0 );
Column( dt, i ) << data type( "Character" );
)
);
Re: csv를 가져오고 일부 열의 형식만 변경합니다.다음과 같은 공식을 사용할 수 있습니까?
Char( Month( :colName ) ) || "." || Char( Day( :colName ) ) || "." ||
Char( Year( :colName ) )
다시 변환하려면?
Re: csv를 가져오고 일부 열의 형식만 변경합니다.레이아웃의 일부를 보면 일부는 작동하지만 전부는 아닙니다. 물론 처리될 때까지 레이아웃을 알지 못합니다.
지금 우리는 CSV의 각 경로에 대한 코드를 가지고 있고 처리할 올바른 경로로 파일을 보내면 됩니다... 하지만 모든 파일에 대해 90%가 같아야 하기 때문에 부끄러운 것 같습니다. 더 역동적인 솔루션이 아닙니다.