Examples use data generated via DATALINES or SASHELP datasets, ensuring the autonomy of each script.
1 Code Block
DATA STEP
Explanation : This example illustrates the basic use of the `KEEP` statement in a `DATA` step running on CAS. It first loads the `sashelp.cars` dataset into the `mycas` library (located on CAS), then creates a new dataset `mycas.bigcars`. The `WHERE=(Weight > 6000)` clause is applied to the input dataset (`mycas.cars`) to filter observations, and the `KEEP Make Model Type;` statement ensures that only the 'Make', 'Model', and 'Type' variables are included in `mycas.bigcars`. The table is then displayed and cleaned up.
Copied!
libname mycas cas;
/* Charger l'ensemble de données Sashelp.Cars dans CAS */
data mycas.cars;
set sashelp.cars;
run;
/* Filtrer les voitures de gros poids et conserver un sous-ensemble de variables */
data mycas.bigcars;
set mycas.cars(where=(Weight > 6000));
keep Make Model Type;
run;
/* Afficher le résultat */
proc print data=mycas.bigcars;
run;
/* Nettoyer les tables CAS temporaires */
proc cas;
table.dropTable / caslib='CASUSER' name='cars';
table.dropTable / caslib='CASUSER' name='bigcars';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Charger l'ensemble de données Sashelp.Cars dans CAS */
4
DATA mycas.cars;
5
SET sashelp.cars;
6
RUN;
7
8
/* Filtrer les voitures de gros poids et conserver un sous-ensemble de variables */
Explanation : This example shows an intermediate use of `KEEP` with a small transformation. A `mycas.produits` table is created directly on CAS using `DATALINES`. A second `DATA` step calculates `TotalValeur` for each product (`Prix * Quantite`), and then the `KEEP` statement is used to retain only the 'Produit', 'Prix', 'Quantite', and the newly calculated 'TotalValeur' variables. The table is then displayed and cleaned up.
Copied!
libname mycas cas;
/* Création d'une table CAS simple avec DATALINES */
data mycas.produits;
input ID Produit $ Prix Quantite;
datalines;
1 Ordinateur 1200 5
2 Souris 25 50
3 Clavier 75 30
4 Ecran 300 10
5 Imprimante 150 15
;
run;
/* Calculer la valeur totale et conserver les variables pertinentes */
data mycas.stock_valeur;
set mycas.produits;
TotalValeur = Prix * Quantite;
keep Produit Prix Quantite TotalValeur;
run;
/* Afficher le résultat */
proc print data=mycas.stock_valeur;
run;
/* Nettoyer les tables CAS temporaires */
proc cas;
table.dropTable / caslib='CASUSER' name='produits';
table.dropTable / caslib='CASUSER' name='stock_valeur';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Création d'une table CAS simple avec DATALINES */
4
DATA mycas.produits;
5
INPUT ID Produit $ Prix Quantite;
6
DATALINES;
7
1 Ordinateur 12005
8
2 Souris 2550
9
3 Clavier 7530
10
4 Ecran 30010
11
5 Imprimante 15015
12
;
13
RUN;
14
15
/* Calculer la valeur totale et conserver les variables pertinentes */
Explanation : This example explores a more advanced case of the `KEEP` statement with conditional logic. It loads `sashelp.class` onto CAS. Then, it attempts to retain different variables based on the student's sex. If the sex is 'M', only 'Name' and 'Age' are kept; otherwise, 'Name', 'Height', and 'Weight' are kept. Although `KEEP` in a `DO` block can have subtle behavior (only variables explicitly named in a global `KEEP` or `DROP` are initially considered, and others are handled by scope), the intent here is to show an attempt at dynamic selection. For increased robustness in heterogeneous output scenarios, approaches with `DROP` or `RENAME` combined with more explicit logic would be preferable. The table is then displayed and cleaned up.
Copied!
libname mycas cas;
/* Charger l'ensemble de données Sashelp.Class dans CAS */
data mycas.etudiants;
set sashelp.class;
run;
/* Conserver différentes variables selon une condition */
data mycas.resultat_etudiants;
set mycas.etudiants;
if Sex = 'M' then do;
keep Name Age;
end;
else do;
keep Name Height Weight;
end;
run;
/* Afficher le résultat (Note: le comportement de KEEP dans les blocs conditionnels peut être complexe.
SAS s'attend à ce que toutes les variables 'kept' soient définies globalement ou que le comportement
soit géré par des instructions 'DROP' pour être plus explicite. Cet exemple est simplifié pour illustrer.
Dans un cas réel, une approche avec DROP/RENAME serait plus robuste pour des sorties hétérogènes.) */
proc print data=mycas.resultat_etudiants;
run;
/* Nettoyer les tables CAS temporaires */
proc cas;
table.dropTable / caslib='CASUSER' name='etudiants';
table.dropTable / caslib='CASUSER' name='resultat_etudiants';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Charger l'ensemble de données Sashelp.Class dans CAS */
4
DATA mycas.etudiants;
5
SET sashelp.class;
6
RUN;
7
8
/* Conserver différentes variables selon une condition */
9
DATA mycas.resultat_etudiants;
10
SET mycas.etudiants;
11
IF Sex = 'M'THENDO;
12
keep Name Age;
13
END;
14
ELSEDO;
15
keep Name Height Weight;
16
END;
17
RUN;
18
19
/* Afficher le résultat (Note: le comportement de KEEP dans les blocs conditionnels peut être complexe.
20
SAS s'attend à ce que toutes les variables 'kept' soient définies globalement ou que le comportement
21
soit géré par des instructions 'DROP' pour être plus explicite. Cet exemple est simplifié pour illustrer.
22
Dans un cas réel, une approche avec DROP/RENAME serait plus robuste pour des sorties hétérogènes.) */
Explanation : This example illustrates the use of `KEEP` in a `DATA` step that runs entirely within the Cloud Analytic Services (CAS) environment. A `mycas.vente_regionale` table is created directly on CAS from in-line data (`DATALINES`). The `promote=yes` option ensures that this table is made persistent within the CAS session. A second `DATA` step processes this CAS table, applying a filter (`WHERE=(Revenu > 50000)`) to the input CAS dataset and using the `KEEP` statement to specifically select the 'Region', 'Produit', and 'Revenu' variables for the output table `mycas.vente_details_filtre`, which is also a CAS table. This demonstrates distributed in-memory processing and variable selection via `KEEP` in a native CAS context. The tables are then displayed and cleaned up.
Copied!
libname mycas cas;
/* Création d'une table CAS simple directement dans CAS à partir de DATALINES */
/* Cela garantit que la table est nativement CAS pour l'exemple. */
data mycas.vente_regionale (promote=yes); /* promote=yes rend la table persistante dans la session CAS */
input Region $ Produit $ UnitesVendues Revenu;
datalines;
Nord Ordinateur 100 120000
Sud Souris 250 6250
Est Clavier 150 11250
Ouest Ecran 50 15000
Nord Imprimante 75 11250
Sud Ordinateur 80 96000
;
run;
/* Traiter la table CAS avec l'étape DATA CAS, filtrer et conserver des variables */
/* L'étape DATA s'exécute sur CAS car l'entrée et la sortie sont des tables CAS. */
data mycas.vente_details_filtre;
set mycas.vente_regionale (where=(Revenu > 50000)); /* Filtrage sur la table CAS */
keep Region Produit Revenu; /* Conserver seulement ces variables */
run;
/* Afficher le résultat de la table traitée sur CAS */
proc print data=mycas.vente_details_filtre;
run;
/* Nettoyer les tables CAS temporaires de la session */
proc cas;
session casauto;
table.dropTable / caslib='CASUSER' name='vente_regionale';
table.dropTable / caslib='CASUSER' name='vente_details_filtre';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Création d'une table CAS simple directement dans CAS à partir de DATALINES */
4
/* Cela garantit que la table est nativement CAS pour l'exemple. */
5
DATA mycas.vente_regionale (promote=yes); /* promote=yes rend la table persistante dans la session CAS */
6
INPUT Region $ Produit $ UnitesVendues Revenu;
7
DATALINES;
8
Nord Ordinateur 100120000
9
Sud Souris 2506250
10
Est Clavier 15011250
11
Ouest Ecran 5015000
12
Nord Imprimante 7511250
13
Sud Ordinateur 8096000
14
;
15
RUN;
16
17
/* Traiter la table CAS avec l'étape DATA CAS, filtrer et conserver des variables */
18
/* L'étape DATA s'exécute sur CAS car l'entrée et la sortie sont des tables CAS. */
19
DATA mycas.vente_details_filtre;
20
SET mycas.vente_regionale (where=(Revenu > 50000)); /* Filtrage sur la table CAS */
21
keep Region Produit Revenu; /* Conserver seulement ces variables */
22
RUN;
23
24
/* Afficher le résultat de la table traitée sur CAS */
25
PROC PRINTDATA=mycas.vente_details_filtre;
26
RUN;
27
28
/* Nettoyer les tables CAS temporaires de la session */
This material is provided "as is" by We Are Cas. There are no warranties, expressed or implied, as to merchantability or fitness for a particular purpose regarding the materials or code contained herein. We Are Cas is not responsible for errors in this material as it now exists or will exist, nor does We Are Cas provide technical support for it.
« To verify if your code is truly running in CAS, check your SAS Log. You should look for the message: NOTE: The DATA step has run in the CAS server. If you don't see this, your data is likely being pulled back to the Compute Server, which will drastically slow down processing for large datasets. »
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.