/****************************************************************************** * Programme : Añadir una tabla CAS con el parámetro WHERE * Reference : ANADIR0F05 * Source : https://www.wearecas.eu/fr/sampleCode/ANADIR0F05 ******************************************************************************/ /* --- BLOC 1 --- */ /* Charger la table SASHELP.CLASS en CAS */ proc casutil; load data=sashelp.class outcaslib="casuser" casout="class_source" replace; run; /* Créer une table cible vide avec la même structure en CAS */ data casuser.class_target; set casuser.class_source(obs=0); run; proc cas; /* Ajouter toutes les lignes de class_source à class_target */ table.append / source={caslib='casuser', name='class_source'} target={caslib='casuser', name='class_target'}; run; /* Vérifier le contenu de la table cible */ proc print data=casuser.class_target; run; /* --- BLOC 2 --- */ /* Charger la table SASHELP.CLASS en CAS */ proc casutil; load data=sashelp.class outcaslib="casuser" casout="class_full" replace; run; /* Créer une table cible avec quelques données initiales */ data casuser.class_filtered; input Name $ Sex $ Age Height Weight; datalines; Alfred M 14 69.0 112.5 Alice F 13 56.5 84.0 ; run; proc cas; /* Ajouter uniquement les étudiants dont l'âge est supérieur ou égal à 15 ans */ table.append / source={caslib='casuser', name='class_full', where="Age >= 15"} target={caslib='casuser', name='class_filtered'}; run; /* Vérifier le contenu de la table cible */ proc print data=casuser.class_filtered; run; /* --- BLOC 3 --- */ /* Créer une table source avec des données brutes en CAS */ data casuser.students_raw; input StudentID Name $ Gender $ Score1 Score2; datalines; 101 Jean M 85 92 102 Marie F 78 88 103 Pierre M 91 75 104 Sophie F 65 95 105 Paul M 80 81 ; run; /* Créer une table cible avec des données initiales */ data casuser.high_achievers; input StudentID Name $ Gender $ AverageScore Status$; datalines; 201 Marc M 90 Initial ; run; proc cas; /* Calculer le score moyen et déterminer un statut avant d'ajouter */ data casuser.students_processed; set casuser.students_raw; AverageScore = (Score1 + Score2) / 2; if AverageScore >= 85 then Status = 'Excellent'; else Status = 'Good'; run; /* Ajouter uniquement les étudiants 'Excellent' et de sexe féminin */ table.append / source={caslib='casuser', name='students_processed', where="Status = 'Excellent' AND Gender = 'F'"} target={caslib='casuser', name='high_achievers'}; run; /* Vérifier le contenu de la table cible */ proc print data=casuser.high_achievers; run; /* --- BLOC 4 --- */ /* Créer une table source temporaire avec un grand nombre d'observations */ data _null_; do i = 1 to 1000; ID = i; Value = mod(i, 100); output; end; run; proc casutil; load data=work.temp_large outcaslib="casuser" casout="large_data_source" promote replace; run; /* Créer une table cible promotée vide */ proc casutil; load data=work.temp_large(obs=0) outcaslib="casuser" casout="filtered_promoted" promote replace; run; proc cas; /* Ajouter des lignes à la table promotée 'filtered_promoted' avec une condition WHERE */ /* L'utilisation de 'promote' assure la persistance de la table au-delà de la session */ table.append / source={caslib='casuser', name='large_data_source', where="Value < 10"} target={caslib='casuser', name='filtered_promoted'}; run; /* Vérifier le contenu de la table cible promotée */ proc print data=casuser.filtered_promoted; run; /* Nettoyage : supprimer les tables CAS après utilisation */ proc cas; table.dropTable / caslib='casuser', name='large_data_source'; table.dropTable / caslib='casuser', name='filtered_promoted'; table.dropTable / caslib='casuser', name='students_raw'; table.dropTable / caslib='casuser', name='high_achievers'; table.dropTable / caslib='casuser', name='class_source'; table.dropTable / caslib='casuser', name='class_target'; table.dropTable / caslib='casuser', name='class_full'; table.dropTable / caslib='casuser', name='class_filtered'; table.dropTable / caslib='casuser', name='students_processed'; run;