Publié le :
CAS TELECHARGEMENT_EXTERNE_PUIS_CREATION_INTERNE

Gestion des tables en mémoire (Ajout, Sauvegarde, Suppression)

Ce code est également disponible en : Deutsch English Español
En attente de validation
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é !
1 
2DATA _null_;
3file _webout;
4put 'Nom,Age,Ville';
5put 'Alice,30,Paris';
6put 'Bob,24,Lyon';
7put 'Charlie,35,Marseille';
8 
9RUN;
10%let data_csv_file = '/tmp/simple_data.csv';
11filename _csv_ temp filevar=_webout;
12 
13DATA _null_;
14file _csv_;
15INPUT;
16put _infile_;
17 
18RUN;
19 
20PROC CAS;
21 
22SESSION casauto;
23TABLE.upload / path=&data_csv_file. casOut={name='MaTableSimple', replace=TRUE}, importOptions={fileType='csv'};
24PRINT 'Table MaTableSimple chargée :';
25TABLE.tableInfo / name='MaTableSimple';
26TABLE.save / TABLE='MaTableSimple', name='MaTableSimpleSauvegardee', replace=TRUE;
27PRINT 'Table MaTableSimpleSauvegardee créée :';
28TABLE.tableInfo / name='MaTableSimpleSauvegardee';
29TABLE.dropTable / name='MaTableSimple';
30PRINT 'Table MaTableSimple supprimée de la mémoire :';
31TABLE.tableInfo / name='MaTableSimple';
32 
33QUIT;
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é !
1/* Définir l'URL du fichier CSV */
2%let csv_url = 'http://support.sas.com/documentation/onlinedoc/viya/exampledatasets/air.csv';
3 
4/* Créer un fichier temporaire pour le téléchargement */
5filename _air_ temp;
6 
7/* Télécharger le fichier CSV */
8PROC HTTP method='get' url=&csv_url. out=_air_;
9RUN;
10 
11/* Obtenir le chemin du fichier temporaire */
12%let temp_air_path = %sysfunc(pathname(_air_));
13 
14PROC CAS;
15 SESSION casauto;
16 
17 /* Charger le fichier CSV avec des options d'importation spécifiques */
18 TABLE.upload /
19 path="&temp_air_path.",
20 casOut={name='AirData', replace=TRUE},
21 importOptions={fileType='csv', guessrows=1000, vartype='best'};
22 
23 PRINT 'Table AirData chargée :';
24 TABLE.tableInfo / name='AirData';
25 
26 /* Sauvegarder la table en mémoire vers un fichier SASHDAT spécifique dans la caslib active */
27 TABLE.save /
28 TABLE='AirData',
29 name='AirDataSauvegardee.sashdat',
30 caslib='CASUSER', /* Spécifier une caslib si nécessaire */
31 replace=TRUE;
32 
33 PRINT 'Table AirDataSauvegardee.sashdat créée dans CASUSER :';
34 TABLE.tableInfo / name='AirDataSauvegardee.sashdat', caslib='CASUSER';
35 
36 /* Promouvoir la table sauvegardée pour la rendre visible à d'autres sessions */
37 TABLE.promote /
38 name='AirDataSauvegardee.sashdat',
39 caslib='CASUSER';
40 
41 PRINT 'Table AirDataSauvegardee.sashdat promue :';
42 TABLE.tableInfo / name='AirDataSauvegardee.sashdat', caslib='CASUSER';
43 
44 /* Supprimer la table originale en mémoire */
45 TABLE.dropTable / name='AirData';
46 PRINT 'Table AirData supprimée de la mémoire :';
47 TABLE.tableInfo / name='AirData';
48QUIT;
49 
50/* Libérer le fichier temporaire */
51filename _air_ clear;
3 Bloc de code
DATA STEP, PROC CAS Data
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é !
1/* Création d'une table en mémoire via un DATA step */
2DATA casuser.Produits;
3 LENGTH Categorie $10 Produit $20;
4 INFILE DATALINES 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';
8 DATALINES;
9Aliments,Pommes,1.50,100
10Aliments,Poires,2.00,75
11Boissons,Jus d'orange,3.25,50
12Boissons,Eau,1.00,200
13Electronique,Souris,25.99,30
14Electronique,Clavier,75.00,20
15;
16run;
17 
18proc cas;
19 session casauto;
20 
21 print 'TABLE Produits créée en mémoire :';
22 table.tableInfo / name='Produits', caslib='CASUSER';
23 
24 /* Sauvegarde de la table en mémoire avec compression et un chemin spécifique */
25 table.save /
26 table={name='Produits', caslib='CASUSER'},
27 name='ProduitsComp.sashdat',
28 caslib='CASUSER',
29 compression='saszpg', /* Compression pour économiser l'espace */
30 replace=TRUE;
31 
32 PRINT 'Table ProduitsComp.sashdat sauvegardée avec compression :';
33 TABLE.tableInfo / name='ProduitsComp.sashdat', caslib='CASUSER';
34 
35 /* Supprimer la table originale en mémoire */
36 TABLE.dropTable / name='Produits', caslib='CASUSER';
37 
38 PRINT 'Table Produits supprimée de la mémoire :';
39 TABLE.tableInfo / name='Produits', caslib='CASUSER';
40 
41 /* Recharger la table sauvegardée dans une nouvelle table en mémoire */
42 TABLE.loadTable /
43 caslib='CASUSER',
44 path='ProduitsComp.sashdat',
45 casOut={name='ProduitsRecharges', replace=TRUE};
46 
47 PRINT 'Table ProduitsRecharges rechargée en mémoire :';
48 TABLE.tableInfo / name='ProduitsRecharges', caslib='CASUSER';
49 
50 /* Afficher quelques lignes pour vérifier */
51 TABLE.fetch /
52 TABLE={name='ProduitsRecharges', caslib='CASUSER'},
53 to=5;
54QUIT;
4 Bloc de code
PROC CAS Data
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é !
1/* Créer une table temporaire pour la démonstration */
2DATA _null_;
3 file _webout;
4 put 'ID,Valeur';
5 put '1,10';
6 put '2,20';
7 put '3,30';
8RUN;
9%let temp_data_file = %sysfunc(pathname(temp));
10filename _tmp_data_ temp filevar=_webout;
11DATA _null_;
12 file _tmp_data_;
13 INPUT;
14 put _infile_;
15RUN;
16 
17PROC 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 :';
38 TABLE.tableInfo / name='TempTable_Saved', caslib='CASUSER';
39 
40 /* Vérifier l'état de la session CAS */
41 SESSION.info RESULT=sinfo;
42 PRINT 'Informations sur la session CAS:';
43 PRINT sinfo;
44 
45 /* Lister toutes les caslibs disponibles */
46 BUILTINS.listCaslibs RESULT=caslibs;
47 PRINT 'Caslibs disponibles:';
48 PRINT caslibs;
49 
50 /* Supprimer les tables temporaires créées */
51 TABLE.dropTable / name='TempTable';
52 TABLE.dropTable / name='TempTable_Saved', caslib='CASUSER';
53QUIT;
54 
55filename _tmp_data_ clear;
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.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« 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. »