L'action 'table.upload' permet de charger des fichiers locaux ou distants dans une table en mémoire CAS. L'action 'table.save' persiste une table en mémoire vers une source de données persistante (par exemple, un fichier SASHDAT) associée à une caslib. Enfin, 'table.dropTable' supprime une table de la mémoire CAS. Le script utilise également 'proc http' pour télécharger un fichier CSV et 'pathname' pour manipuler des chemins de fichiers temporaires, assurant ainsi que l'exemple est autonome.
Analyse des données
Type : TELECHARGEMENT_EXTERNE_PUIS_CREATION_INTERNE
Les exemples téléchargent un fichier CSV depuis un serveur SAS ou créent des données en interne (datalines) pour les démonstrations.
1 Bloc de code
PROC CAS, DATA step Data
Explication : Cet exemple crée un fichier CSV simple en utilisant un DATA step, puis le charge dans une table CAS en mémoire nommée 'MaTableSimple'. Ensuite, il sauvegarde cette table sous le nom 'MaTableSimpleSauvegardee' dans la caslib active et enfin, il supprime la table originale 'MaTableSimple' de la mémoire CAS. L'action 'table.tableInfo' est utilisée pour vérifier l'existence des tables.
Copié !
data _null_; file _webout; put 'Nom,Age,Ville'; put 'Alice,30,Paris'; put 'Bob,24,Lyon'; put 'Charlie,35,Marseille'; run; %let data_csv_file = '/tmp/simple_data.csv'; filename _csv_ temp filevar=_webout; data _null_; file _csv_; input; put _infile_; run; proc cas; session casauto; table.upload / path=&data_csv_file. casOut={name='MaTableSimple', replace=TRUE}, importOptions={fileType='csv'}; print 'Table MaTableSimple chargée :'; table.tableInfo / name='MaTableSimple'; table.save / table='MaTableSimple', name='MaTableSimpleSauvegardee', replace=TRUE; print 'Table MaTableSimpleSauvegardee créée :'; table.tableInfo / name='MaTableSimpleSauvegardee'; table.dropTable / name='MaTableSimple'; print 'Table MaTableSimple supprimée de la mémoire :'; table.tableInfo / name='MaTableSimple'; quit;
PRINT'Table MaTableSimple supprimée de la mémoire :';
31
TABLE.tableInfo / name='MaTableSimple';
32
33
QUIT;
34
2 Bloc de code
PROC CAS
Explication : Cet exemple télécharge un fichier CSV 'air.csv', le charge en mémoire CAS sous le nom 'AirData' en utilisant des 'importOptions' pour une meilleure détection des types de variables. Il sauvegarde ensuite cette table en mémoire sous forme de fichier SASHDAT nommé 'AirDataSauvegardee.sashdat' dans la caslib 'CASUSER', puis la 'promote' pour la rendre accessible à d'autres sessions. Enfin, la table originale 'AirData' est supprimée de la mémoire.
Copié !
/* Définir l'URL du fichier CSV */
%let csv_url = 'http://support.sas.com/documentation/onlinedoc/viya/exampledatasets/air.csv';
/* Créer un fichier temporaire pour le téléchargement */
filename _air_ temp;
/* Télécharger le fichier CSV */
proc http method='get' url=&csv_url. out=_air_;
run;
/* Obtenir le chemin du fichier temporaire */
%let temp_air_path = %sysfunc(pathname(_air_));
proc cas;
session casauto;
/* Charger le fichier CSV avec des options d'importation spécifiques */
table.upload /
path="&temp_air_path.",
casOut={name='AirData', replace=TRUE},
importOptions={fileType='csv', guessrows=1000, vartype='best'};
print 'Table AirData chargée :';
table.tableInfo / name='AirData';
/* Sauvegarder la table en mémoire vers un fichier SASHDAT spécifique dans la caslib active */
table.save /
table='AirData',
name='AirDataSauvegardee.sashdat',
caslib='CASUSER', /* Spécifier une caslib si nécessaire */
replace=TRUE;
print 'Table AirDataSauvegardee.sashdat créée dans CASUSER :';
table.tableInfo / name='AirDataSauvegardee.sashdat', caslib='CASUSER';
/* Promouvoir la table sauvegardée pour la rendre visible à d'autres sessions */
table.promote /
name='AirDataSauvegardee.sashdat',
caslib='CASUSER';
print 'Table AirDataSauvegardee.sashdat promue :';
table.tableInfo / name='AirDataSauvegardee.sashdat', caslib='CASUSER';
/* Supprimer la table originale en mémoire */
table.dropTable / name='AirData';
print 'Table AirData supprimée de la mémoire :';
table.tableInfo / name='AirData';
quit;
/* Libérer le fichier temporaire */
filename _air_ clear;
Explication : Cet exemple avancé crée une table SAS en mémoire ('Produits') avec des formats et des labels via un DATA step. Il sauvegarde ensuite cette table au format SASHDAT avec une compression 'saszpg' et la stocke dans la caslib 'CASUSER'. La table originale est supprimée, puis la table sauvegardée est rechargée en mémoire sous un nouveau nom ('ProduitsRecharges') pour démontrer le cycle complet. Les premières lignes de la table rechargée sont affichées pour vérification.
Copié !
/* Création d'une table en mémoire via un DATA step */
data casuser.Produits;
length Categorie $10 Produit $20;
infile datalines dsd;
input Categorie $ Produit $ Prix Stock;
format Prix dollar8.2;
label Categorie='Catégorie de Produit' Produit='Nom du Produit' Prix='Prix Unitaire' Stock='Quantité en Stock';
datalines;
Aliments,Pommes,1.50,100
Aliments,Poires,2.00,75
Boissons,Jus d'orange,3.25,50
Boissons,Eau,1.00,200
Electronique,Souris,25.99,30
Electronique,Clavier,75.00,20
;
run;
proc cas;
session casauto;
print 'Table Produits créée en mémoire :';
table.tableInfo / name='Produits', caslib='CASUSER';
/* Sauvegarde de la table en mémoire avec compression et un chemin spécifique */
table.save /
table={name='Produits', caslib='CASUSER'},
name='ProduitsComp.sashdat',
caslib='CASUSER',
compression='saszpg', /* Compression pour économiser l'espace */
replace=TRUE;
print 'Table ProduitsComp.sashdat sauvegardée avec compression :';
table.tableInfo / name='ProduitsComp.sashdat', caslib='CASUSER';
/* Supprimer la table originale en mémoire */
table.dropTable / name='Produits', caslib='CASUSER';
print 'Table Produits supprimée de la mémoire :';
table.tableInfo / name='Produits', caslib='CASUSER';
/* Recharger la table sauvegardée dans une nouvelle table en mémoire */
table.loadTable /
caslib='CASUSER',
path='ProduitsComp.sashdat',
casOut={name='ProduitsRecharges', replace=TRUE};
print 'Table ProduitsRecharges rechargée en mémoire :';
table.tableInfo / name='ProduitsRecharges', caslib='CASUSER';
/* Afficher quelques lignes pour vérifier */
table.fetch /
table={name='ProduitsRecharges', caslib='CASUSER'},
to=5;
quit;
1
/* Création d'une table en mémoire via un DATA step */
2
DATA casuser.Produits;
3
LENGTH Categorie $10 Produit $20;
4
INFILEDATALINES dsd;
5
INPUT Categorie $ Produit $ Prix Stock;
6
FORMAT Prix dollar8.2;
7
label Categorie='Catégorie de Produit' Produit='Nom du Produit' Prix='Prix Unitaire' Stock='Quantité en Stock';
Explication : Cet exemple démontre des opérations CAS avancées. Après avoir créé et chargé une table temporaire, il la sauvegarde dans la caslib 'CASUSER'. Il utilise ensuite l'action 'session.info' pour obtenir des détails sur la session CAS actuelle et 'builtins.listCaslibs' pour lister toutes les caslibs disponibles, ce qui est utile pour la gestion des ressources et le débogage. Enfin, les tables temporaires sont supprimées.
Copié !
/* Créer une table temporaire pour la démonstration */
data _null_;
file _webout;
put 'ID,Valeur';
put '1,10';
put '2,20';
put '3,30';
run;
%let temp_data_file = %sysfunc(pathname(temp));
filename _tmp_data_ temp filevar=_webout;
data _null_;
file _tmp_data_;
input;
put _infile_;
run;
proc cas;
session casauto;
/* Charger la table */
table.upload /
path="&temp_data_file.",
casOut={name='TempTable', replace=TRUE},
importOptions={fileType='csv'};
print 'Table TempTable chargée :';
table.tableInfo / name='TempTable';
/* Sauvegarder la table dans une caslib spécifique (par exemple, un chemin de fichier) */
/* Assurez-vous que 'caslib_perso' est une caslib existante et accessible avec des droits d'écriture */
/* Par exemple, 'CASUSER' est souvent disponible */
table.save /
table='TempTable',
name='TempTable_Saved',
caslib='CASUSER',
replace=TRUE;
print 'Table TempTable_Saved sauvegardée dans CASUSER :';
table.tableInfo / name='TempTable_Saved', caslib='CASUSER';
/* Vérifier l'état de la session CAS */
session.info result=sinfo;
print 'Informations sur la session CAS:';
print sinfo;
/* Lister toutes les caslibs disponibles */
builtins.listCaslibs result=caslibs;
print 'Caslibs disponibles:';
print caslibs;
/* Supprimer les tables temporaires créées */
table.dropTable / name='TempTable';
table.dropTable / name='TempTable_Saved', caslib='CASUSER';
quit;
filename _tmp_data_ clear;
1
/* Créer une table temporaire pour la démonstration */
2
DATA _null_;
3
file _webout;
4
put 'ID,Valeur';
5
put '1,10';
6
put '2,20';
7
put '3,30';
8
RUN;
9
%let temp_data_file = %sysfunc(pathname(temp));
10
filename _tmp_data_ temp filevar=_webout;
11
DATA _null_;
12
file _tmp_data_;
13
INPUT;
14
put _infile_;
15
RUN;
16
17
PROC CAS;
18
SESSION casauto;
19
20
/* Charger la table */
21
TABLE.upload /
22
path="&temp_data_file.",
23
casOut={name='TempTable', replace=TRUE},
24
importOptions={fileType='csv'};
25
PRINT'Table TempTable chargée :';
26
TABLE.tableInfo / name='TempTable';
27
28
/* Sauvegarder la table dans une caslib spécifique (par exemple, un chemin de fichier) */
29
/* Assurez-vous que 'caslib_perso' est une caslib existante et accessible avec des droits d'écriture */
30
/* Par exemple, 'CASUSER' est souvent disponible */
31
TABLE.save /
32
TABLE='TempTable',
33
name='TempTable_Saved',
34
caslib='CASUSER',
35
replace=TRUE;
36
37
PRINT'Table TempTable_Saved sauvegardée dans CASUSER :';
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Ce document illustre parfaitement le workflow moderne d'un Data Engineer sur SAS Viya. On ne se contente plus de lire des fichiers ; on gère un cycle de vie dynamique : Ingestion, Transformation, Persistance et Nettoyage. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.