The vars parameter within importOptions acts very much like the INPUT statement in a traditional SAS Data Step. If you do not define these variables explicitly, the CAS server attempts to "guess" the data type based on the first few rows (similar to GUESSINGROWS). This often fails with dirty data (e.g., a "10%" string might force the whole column to VARCHAR). By explicitly defining {name="pct" type="double" informat="percent8."}, you override the guesser and force CAS to perform the mathematical conversion immediately, ensuring your numbers are ready for analysis the moment they hit memory.
Type : CREATION_INTERNE
Examples use CSV data generated directly in the code via `filename` statements, ensuring their autonomy and reproducibility without dependence on pre-existing external files on the CAS file system.
| 1 | /* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */ |
| 2 | /*options cashost="cloud.example.com" casport=5570;*/ |
| 3 | |
| 4 | /* Démarre la session Casauto si ce n'est pas déjà fait. */ |
| 5 | /*cas casauto;*/ |
| 6 | |
| 7 | /* Création d'un fichier CSV temporaire dans une caslib accessible */ |
| 8 | filename volume_basic temp; |
| 9 | DATA _null_; |
| 10 | file volume_basic; |
| 11 | put '12-06-2019,"1,245",10%'; |
| 12 | put '01-03-2020,"3,400",27%'; |
| 13 | put '02-07-2020,"2,341",18%'; |
| 14 | put '03-06-2020,"5,700",45%'; |
| 15 | put '04-03-2020,"12,686",100%'; |
| 16 | RUN; |
| 17 | |
| 18 | PROC CAS; |
| 19 | SESSION casauto; |
| 20 | |
| 21 | /* Charge le fichier CSV temporaire en mémoire CAS */ |
| 22 | TABLE.loadTable / |
| 23 | path="volume_basic", |
| 24 | caslib="casuser", /* Spécifie une caslib, ex: 'casuser' */ |
| 25 | importOptions={ |
| 26 | fileType="csv", |
| 27 | getNames=false, |
| 28 | vars={ |
| 29 | {name="dt" type="double" informat="anydtdte10." FORMAT="nldate20."}, |
| 30 | {name="volume" type="double" informat="comma9." FORMAT="comma."}, |
| 31 | {name="pct" type="double" informat="percent8." FORMAT="percent."} |
| 32 | } |
| 33 | }, |
| 34 | casout={name="volume_basic", replace=True, promote=True}; /* Promote rend la table globale */ |
| 35 | |
| 36 | /* Affiche les informations sur les colonnes de la table chargée */ |
| 37 | TABLE.columnInfo / TABLE="volume_basic"; |
| 38 | |
| 39 | title "Valeurs numériques brutes (Exemple Basique)"; |
| 40 | /* Récupère et affiche les données sans appliquer de formats */ |
| 41 | TABLE.fetch / |
| 42 | TABLE="volume_basic", |
| 43 | fetchVars={ |
| 44 | {name="dt", FORMAT=""}, |
| 45 | {name="volume", FORMAT=""}, |
| 46 | {name="pct", FORMAT=""} |
| 47 | }; |
| 48 | RUN; |
| 49 | |
| 50 | title "Formats appliqués par CAS (Exemple Basique)"; |
| 51 | /* Récupère et affiche les données en appliquant les formats définis */ |
| 52 | TABLE.fetch / TABLE="volume_basic", FORMAT=True; |
| 53 | RUN; |
| 54 | QUIT; |
| 55 | |
| 56 | /* Nettoyage : supprime la table CAS en mémoire et le fichier temporaire */ |
| 57 | PROC CAS; |
| 58 | SESSION casauto; |
| 59 | TABLE.dropTable / caslib="casuser", name="volume_basic"; |
| 60 | RUN; |
| 61 | QUIT; |
| 62 | filename volume_basic clear; |
| 1 | /* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */ |
| 2 | /*options cashost="cloud.example.com" casport=5570;*/ |
| 3 | |
| 4 | /* Démarre la session Casauto si ce n'est pas déjà fait. */ |
| 5 | /*cas casauto;*/ |
| 6 | |
| 7 | /* Création d'un fichier CSV temporaire avec plus de données */ |
| 8 | filename volume_inter temp; |
| 9 | DATA _null_; |
| 10 | file volume_inter; |
| 11 | put '12-06-2019,"1,245",10%'; |
| 12 | put '01-03-2020,"3,400",27%'; |
| 13 | put '02-07-2020,"2,341",18%'; |
| 14 | put '03-06-2020,"5,700",45%'; |
| 15 | put '04-03-2020,"12,686",100%'; |
| 16 | put '05-01-2020,"8,910",70%'; |
| 17 | put '06-02-2020,"1,500",15%'; |
| 18 | RUN; |
| 19 | |
| 20 | PROC CAS; |
| 21 | SESSION casauto; |
| 22 | |
| 23 | /* Charge le fichier CSV temporaire dans la caslib 'casuser' et le promeut */ |
| 24 | TABLE.loadTable / |
| 25 | path="volume_inter", |
| 26 | caslib="casuser", /* Spécifie explicitement la caslib 'casuser' */ |
| 27 | importOptions={ |
| 28 | fileType="csv", |
| 29 | getNames=false, |
| 30 | vars={ |
| 31 | {name="DateTransaction" type="double" informat="anydtdte10." FORMAT="nldate20."}, |
| 32 | {name="VolumeVendu" type="double" informat="comma9." FORMAT="comma."}, |
| 33 | {name="PourcentageCroissance" type="double" informat="percent8." FORMAT="percent."} |
| 34 | } |
| 35 | }, |
| 36 | casout={name="volume_inter_global", replace=True, promote=True}; /* Promouvoir pour accès global */ |
| 37 | |
| 38 | /* Affiche les 10 premières lignes de la table globale */ |
| 39 | title "Données de Volume (Exemple Intermédiaire)"; |
| 40 | TABLE.fetch / TABLE="volume_inter_global", to=10, FORMAT=True; |
| 41 | RUN; |
| 42 | QUIT; |
| 43 | |
| 44 | /* Nettoyage : supprime la table CAS globale et le fichier temporaire */ |
| 45 | PROC CAS; |
| 46 | SESSION casauto; |
| 47 | TABLE.dropTable / caslib="casuser", name="volume_inter_global"; |
| 48 | RUN; |
| 49 | QUIT; |
| 50 | filename volume_inter clear; |
| 1 | /* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */ |
| 2 | /*options cashost="cloud.example.com" casport=5570;*/ |
| 3 | |
| 4 | /* Démarre la session Casauto si ce n'est pas déjà fait. */ |
| 5 | /*cas casauto;*/ |
| 6 | |
| 7 | /* Création d'un fichier CSV temporaire pour l'exemple avancé */ |
| 8 | filename volume_adv temp; |
| 9 | DATA _null_; |
| 10 | file volume_adv; |
| 11 | put '12-06-2019,"1,245",10%'; |
| 12 | put '01-03-2020,"3,400",27%'; |
| 13 | put '02-07-2020,"2,341",18%'; |
| 14 | put '03-06-2020,"5,700",45%'; |
| 15 | put '04-03-2020,"12,686",100%'; |
| 16 | put '05-01-2020,"8,910",70%'; |
| 17 | put '06-02-2020,"1,500",15%'; |
| 18 | put '07-01-2020,"6,000",50%'; |
| 19 | put '08-01-2020,"9,500",80%'; |
| 20 | RUN; |
| 21 | |
| 22 | PROC CAS; |
| 23 | SESSION casauto; |
| 24 | |
| 25 | /* Charge le fichier CSV temporaire */ |
| 26 | TABLE.loadTable / |
| 27 | path="volume_adv", |
| 28 | caslib="casuser", |
| 29 | importOptions={ |
| 30 | fileType="csv", |
| 31 | getNames=false, |
| 32 | vars={ |
| 33 | {name="Date" type="double" informat="anydtdte10." FORMAT="nldate20."}, |
| 34 | {name="Volume" type="double" informat="comma9." FORMAT="comma."}, |
| 35 | {name="CroissancePct" type="double" informat="percent8." FORMAT="percent."} |
| 36 | } |
| 37 | }, |
| 38 | casout={name="volume_initial", replace=True, promote=False}; |
| 39 | |
| 40 | /* Exécute un DATA step en CAS pour créer une nouvelle variable et filtrer les données */ |
| 41 | dataStep.runCode / |
| 42 | code=" |
| 43 | data casuser.volume_processed; |
| 44 | set casuser.volume_initial; |
| 45 | VolumeAjuste = Volume * (1 + CroissancePct); |
| 46 | if VolumeAjuste > 5000 then output; |
| 47 | run;", |
| 48 | single="yes"; |
| 49 | |
| 50 | /* Affiche les informations sur la nouvelle table traitée */ |
| 51 | TABLE.columnInfo / TABLE="volume_processed", caslib="casuser"; |
| 52 | |
| 53 | title "Données de Volume Traitées (Exemple Avancé)"; |
| 54 | /* Récupère et affiche les données de la table traitée */ |
| 55 | TABLE.fetch / TABLE="volume_processed", caslib="casuser", FORMAT=True; |
| 56 | RUN; |
| 57 | QUIT; |
| 58 | |
| 59 | /* Nettoyage : supprime les tables CAS et le fichier temporaire */ |
| 60 | PROC CAS; |
| 61 | SESSION casauto; |
| 62 | TABLE.dropTable / caslib="casuser", name="volume_initial"; |
| 63 | TABLE.dropTable / caslib="casuser", name="volume_processed"; |
| 64 | RUN; |
| 65 | QUIT; |
| 66 | filename volume_adv clear; |
| 1 | /* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */ |
| 2 | /*options cashost="cloud.example.com" casport=5570;*/ |
| 3 | |
| 4 | /* Démarre la session Casauto si ce n'est pas déjà fait. */ |
| 5 | /*cas casauto;*/ |
| 6 | |
| 7 | /* Création d'un fichier CSV temporaire avec une variable catégorielle */ |
| 8 | filename volume_cas_analysis temp; |
| 9 | DATA _null_; |
| 10 | file volume_cas_analysis; |
| 11 | put '12-06-2019,"1,245",10%,Est'; |
| 12 | put '01-03-2020,"3,400",27%,Ouest'; |
| 13 | put '02-07-2020,"2,341",18%,Nord'; |
| 14 | put '03-06-2020,"5,700",45%,Sud'; |
| 15 | put '04-03-2020,"12,686",100%,Est'; |
| 16 | put '05-01-2020,"8,910",70%,Ouest'; |
| 17 | put '06-02-2020,"1,500",15%,Nord'; |
| 18 | put '07-01-2020,"6,000",50%,Sud'; |
| 19 | put '08-01-2020,"9,500",80%,Est'; |
| 20 | RUN; |
| 21 | |
| 22 | PROC CAS; |
| 23 | SESSION casauto; |
| 24 | |
| 25 | /* Charge le fichier CSV temporaire avec une nouvelle variable 'Region' */ |
| 26 | TABLE.loadTable / |
| 27 | path="volume_cas_analysis", |
| 28 | caslib="casuser", |
| 29 | importOptions={ |
| 30 | fileType="csv", |
| 31 | getNames=false, |
| 32 | vars={ |
| 33 | {name="Date" type="double" informat="anydtdte10." FORMAT="nldate20."}, |
| 34 | {name="Volume" type="double" informat="comma9." FORMAT="comma."}, |
| 35 | {name="CroissancePct" type="double" informat="percent8." FORMAT="percent."}, |
| 36 | {name="Region" type="varchar" LENGTH=50} |
| 37 | } |
| 38 | }, |
| 39 | casout={name="volume_regions", replace=True, promote=False}; |
| 40 | |
| 41 | /* Exécute une analyse de fréquence sur la variable 'Region' */ |
| 42 | title "Analyse de Fréquence par Région (Exemple Viya/CAS)"; |
| 43 | SIMPLE.freq / |
| 44 | TABLE={name="volume_regions", caslib="casuser"}, |
| 45 | inputs={{name="Region"}}; |
| 46 | |
| 47 | /* Calcule les moyennes du volume par région */ |
| 48 | title "Statistiques Descriptives par Région (Exemple Viya/CAS)"; |
| 49 | SIMPLE.summary / |
| 50 | TABLE={name="volume_regions", caslib="casuser"}, |
| 51 | casout={name="summary_volume_regions", replace=True}, |
| 52 | subSet={"mean"}, |
| 53 | group={{ |
| 54 | name="Region"} |
| 55 | }, |
| 56 | inputs={{ |
| 57 | name="Volume"} |
| 58 | }; |
| 59 | RUN; |
| 60 | |
| 61 | QUIT; |
| 62 | |
| 63 | /* Nettoyage : supprime les tables CAS et le fichier temporaire */ |
| 64 | PROC CAS; |
| 65 | SESSION casauto; |
| 66 | TABLE.dropTable / caslib="casuser", name="volume_regions"; |
| 67 | TABLE.dropTable / caslib="casuser", name="summary_volume_regions"; |
| 68 | RUN; |
| 69 | QUIT; |
| 70 | filename volume_cas_analysis clear; |