/****************************************************************************** * Programme : SAS Viya : Maîtrisez le cycle de vie des tables CAS (Upload, Save, Drop) * Reference : GESTIOAE93 * Source : https://www.wearecas.eu/en/sampleCode/GESTIOAE93 ******************************************************************************/ /* --- BLOC 1 --- */ 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; /* --- BLOC 2 --- */ /* 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; /* --- BLOC 3 --- */ /* 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; /* --- BLOC 4 --- */ /* 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;