Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?Dans JMP 14.2.0, lorsque je lis (ou « ouvre ») un fichier CSV contenant une colonne avec des valeurs de numéro de version à 3 chiffres, ces valeurs sont interprétées comme une date. Par exemple, si verTest.csv contient :
Product,Station,Version,Date
Widget,Audio-Test,2.2.2044,3/2/19
Widget,RF-Test,2.2.2045,3/2/20
toutes les valeurs de colonne sont interprétées comme prévu, à l'exception des valeurs de version qui sont lues sous forme de dates, par exemple 2/2/2044 et 2/2/2045, avec le type de données numérique, le type de modélisation continue et avec le m/d/y. format. Je trouve que les numéros de version à 2 et 4 chiffres sont lus correctement, c'est-à-dire sous forme de chaînes de caractères.
Une autre complication est que je ne sais pas à l'avance quelles colonnes pourraient contenir ce format, donc je ne peux pas définir explicitement les types de colonnes à l'avance (et il n'est pas non plus clair qu'il soit même possible de définir les types de colonnes avant d'ouvrir un fichier CSV). Et si j'essaie de modifier manuellement les types de colonnes après coup, il semble que les caractères '/' soient intégrés de telle sorte que changer le type en Caractère laisse la valeur avec une chaîne "2/2/2044".
Existe-t-il un moyen d'empêcher cette interprétation afin que les numéros de version à 3 chiffres soient lus sous forme de chaînes, c'est-à-dire Caractère, Nominal (et sans affecter la façon dont les dates sont interprétées en utilisant les formats traditionnels tels que m/d/y) ?
Re : Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?...et vous pouvez utiliser des dates comme celle-ci
<<SET date="" filter=""></SET>
<<CreateWindow with pre-populated date range<<CreateWindow with pre-populated date range<
Re : Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?Content que ça marche pour toi !
La syntaxe a trois objectifs : mémoriser l'état complet de la boîte de dialogue si vous souhaitez relancer la boîte de dialogue avec des valeurs pré-remplies, exécuter l'importation et afficher les possibilités. Les filtres sont un exemple de tout cela :
<<SET name="" filter=""></SET>
En comparant cela au dialogue,
using <<CreateWindow instead of <<ImportDatausing <<CreateWindow instead of <<ImportDataen utilisant <<
il y a des cases à cocher dans la boîte de dialogue qui activent et désactivent le filtre. Ci-dessus, le filtre de nom est activé et les filtres de taille et de date ne sont pas utilisés. Les valeurs des filtres de taille et de date sont soit (1) les dernières valeurs que vous avez expérimentées, soit (2) la plage de tailles et la plage de dates du fichier que vous avez sélectionné. Très probablement (2). Votre fichier fait donc probablement 100 octets. Le nombre est une valeur date-heure JMP, vous pouvez utiliser quelque chose comme asdate( 3666002110.40841 ) obtenir
02 mars 2020:13:55:10
Vous pouvez supprimer ces lignes et (probablement) bien d’autres du script ; ce sont principalement des valeurs par défaut qui montrent comment utiliser MFI.
Enfin, ce que fait réellement le script : la fonction MFI(...) renvoie un objet. Le << Importer des données La méthode à la toute fin indique à l'objet d'importer réellement les données. Il existe un exemple dans l'index des scripts qui montre << Créer une fenêtre comme une autre méthode. L'objet MFI est utilisé immédiatement puis détruit dans le << Importer des données cas. Dans le << Créer une fenêtre Dans ce cas, l'objet MFI n'est détruit qu'à la fermeture de la fenêtre. Vous pouvez également utiliser xyz = MultipleFileImport(...); et envoyer des messages à la variable xyz (y compris Importer des données et Créer une fenêtre ); l'objet ne sera pas détruit tant que la variable n'est pas effacée. ShowProperties(xyz) listera les messages dans la fenêtre du journal ; ils sont également utilisés dans le script.
Re : Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?Salut @Craige_Hales ,
Merci beaucoup pour la suggestion! j'ai implémenté Importation de plusieurs fichiers et je l'ai testé intensivement ; Je ne trouve aucun problème et le message indique mes chiffres à 3 chiffres. Version colonne (et d'autres similaires) avec les délimiteurs intacts, mais lit toujours les dates correctement.
À partir de la source produite par le manuel Importation de plusieurs fichiers , j'ai obtenu ceci :
Multiple File Import(
<<SET folder=""></SET>
Pour intégrer cela dans ma fonction d'importation (qui prend le chemin en paramètre), il me suffisait de renseigner correctement les deux premières méthodes :
Convert_csv_to_jmp = Function( {path},
:
:
// determine folder and file args for Multiple File Import function.
lastSlash = Contains( path, "/", -1 );
dir = Substr( path, 1, lastSlash );
If( Length(dir) == 0,
dir = "./";
);
file = Substr( path, lastSlash+1 );
Write( "Path: ", dir, "\!nFile: ", file, "\!n" );
Multiple File Import(
<<SET folder=""></SET>J'apprécierais que quelqu'un de la communauté puisse créer un lien vers une bonne documentation sur cette fonction. J'aimerais comprendre ce que font toutes les méthodes. Par exemple, Définir le filtre de date semble vouloir des arguments très obscurs.
Re : Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?Utilisez l'importation de plusieurs fichiers. Il n'essaiera pas de deviner les formats de date. Il importera un fichier à la fois si c'est tout ce que vous sélectionnez, mais il vise vraiment à importer un tas de fichiers similaires à partir d'un dossier. Consultez le script source d'une importation manuelle si vous devez répéter le processus.
Re : Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?Salut Cameron,
Merci pour votre réponse. Selon votre suggestion, sur le dernier écran d'importation, j'ai pu cliquer sur l'icône à gauche de la flèche rouge pour la faire passer d'une colonne de données numériques à une colonne de données de caractères. Avec cela, il a importé les données comme je le souhaitais.

La source m'a donné ceci :
Open(
"<SPAN>/Users/st/src/analysis_jmp/</SPAN>testVer.csv",
columns(
New Column( "Product", Character, "Nominal" ),
New Column( "Station", Character, "Nominal" ),
New Column( "Version", Character, "Nominal" ),
New Column( "Date",
Numeric,
"Continuous",
Format( "m/d/y", 10 ),
Input Format( "m/d/y" )
)
),
Cela indique que il est possible de définir les types de colonnes avant d'ouvrir un fichier CSV. Cependant, lorsque je cible uniquement la colonne Version dans mon script JSL, les choses se détraquent – (bug JSL peut-être ??).
Mon scénario :</CODE></P><P> </P><PRE><CODE class=" language-jsl">path = "./verTest.csv";<BR />dt = Open(
path,
columns(
New Column( "Version", Character, "Nominal" )
),
Source résultante :
Open(
"/Users/st/src/analysis_jmp/verTest.csv",
columns(<BR /> New Column( "Product", Character, "Nominal" )<BR /> ),
Ainsi, il semble que l'importateur ne tienne pas compte du nom dans la spécification de la nouvelle colonne et les prend simplement par ordre d'apparition dans le fichier (« Produit » étant le premier – j'ai ajouté une deuxième nouvelle colonne avec des résultats similaires renforçant ainsi cette hypothèse) .
Même si cela fonctionnait, cela supposerait que je connaissais le nom de la colonne avant l'importation (ce qui n'est pas le cas). Dans certains cas, je le fais, donc je pourrais au moins appliquer cette logique (en supposant que cela fonctionne) pour ceux-là ; mais je finirais par en manquer certains.
J'espérais qu'il pourrait y avoir une option d'importation qui limiterait ou contraindrait la façon dont les dates sont interprétées en général (de sorte que les caractères '.' ne soient pas considérés comme des délimiteurs m/d/y, par exemple).
Re : Comment puis-je empêcher que les numéros de version à 3 chiffres soient lus sous forme de dates dans le tableau de données ?Salut @SteveTerry ,
Lorsque vous ouvrez le .csv depuis avec dans JMP, vous devriez avoir quelques options dans la fenêtre de navigation (au moins pour Windows.je n'ai pas de Mac).Choisissez Données (à l'aide de l'aperçu) et vous aurez la possibilité de définir manuellement les formats pour les colonnes importées.Voici à quoi cela ressemble sous Windows :

Lorsque vous cliquez sur Ouvrir, vous obtenez une série d'écrans de dialogue pour définir les paramètres d'importation.Sur le deuxième écran, vous pouvez cliquer en haut de l'aperçu sur l'en-tête que vous souhaitez modifier et vous assurer que cette colonne est importée en tant que colonne de caractères.Une fois que vous l'avez importé comme vous le souhaitez, vous pouvez simplement copier le script Source du tableau et le réutiliser ultérieurement pour automatiser l'importation.