importer csv et ne changer que le format de quelques colonnesJ'ai des fichiers csv qui doivent être importés et il y a quelques champs qui correspondent aux versions du logiciel. Cependant, ils sont dans le csv comme xyz et ne sont pas encapsulés entre guillemets, donc JMP essaie de les intégrer en tant que type de données numériques. Lorsqu'il le fait, JMP pense que le nombre est une date et le convertit en une date, il est donc très difficile de le reconvertir en une version utilisable.
Si j'importe manuellement un fichier, je peux utiliser l'aperçu pour forcer les colonnes dont j'ai besoin aux types de données que je veux. Cependant, le script d'importation résultant a 'new column()' pour chaque colonne, et je dois soit omettre le tout pour que JMP importe simplement le fichier OU que les 186 colonnes soient répertoriées juste pour que je puisse contrôler l'importation de quelques-unes.
Là où le vrai problème entre en jeu, c'est que certains de ces fichiers ont des colonnes différentes ... certains sont en commun, d'autres non, mais dans tous les cas, les colonnes de version sont en commun ET je dois contrôler la manière dont elles sont introduites.
Voici ce que j'aimerais pouvoir faire (ou quelque chose comme ça) mais le nombre total de colonnes est vraiment de 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" )
)
)
ScriptRe : importer csv et ne changer que le format de quelques colonnesVoici un script qui devrait fonctionner pour changer correctement les colonnes en caractère.
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 : importer csv et ne changer que le format de quelques colonnesPourriez-vous utiliser une formule comme
Char( Month( :colName ) ) || "." || Char( Day( :colName ) ) || "." ||
Char( Year( :colName ) )
reconvertir ?
Re : importer csv et ne changer que le format de quelques colonnesEn regardant une partie de la mise en page, cela fonctionnerait pour certains d'entre eux, mais pas pour tous. et, bien sûr, je ne connaîtrai pas la mise en page que j'obtiens tant qu'elle n'aura pas été traitée.
À l'heure actuelle, nous avons du code pour chaque avenue de CSV et nous avons juste besoin d'envoyer les fichiers sur le bon chemin pour qu'ils soient traités ... mais comme cela devrait être à 90% le même pour tous, cela semble être une honte là-bas n'est pas une solution plus dynamique.