ETL SASHELP_DATA_SET

Exemples : Traitement WHERE

Ce code est également disponible en : Deutsch English
En attente de validation
Ce guide explore en détail l'utilisation des expressions WHERE dans les DATA steps SAS©. Il illustre la sélection de lignes en fonction de conditions simples, d'expressions WHERE composées avec des opérateurs logiques (AND, OR, NOT), et l'impact de l'ordre d'évaluation. Des exemples spécifiques montrent l'application de l'option WHERE= pour les ensembles de données, en soulignant la distinction entre le traitement sur le serveur de calcul SAS© et le serveur CAS. L'amélioration des performances via l'indexation des jeux de données est également abordée. Les idées clés incluent la capacité des expressions WHERE à améliorer les performances en réduisant les lignes lues, leur applicabilité dans les environnements SAS© et CAS, et l'importance de l'utilisation de parenthèses pour contrôler l'ordre d'évaluation des opérateurs booléens.
Analyse des données

Type : SASHELP_DATA_SET


Les exemples utilisent les jeux de données intégrés SASHELP.SHOES, SASHELP.CLASS et SASHELP.BASEBALL.

1 Bloc de code
DATA STEP Data
Explication :
Cet exemple utilise l'instruction WHERE pour sélectionner conditionnellement des lignes du jeu de données sashelp.class et écrit les lignes sélectionnées dans la table mylib.shoes. Le premier DATA step s'exécute dans SAS et sous-ensemble les données, sélectionnant uniquement les lignes où les ventes sont supérieures à 500 000 $. Les données filtrées sont chargées dans la table de sortie mylib.shoes. Le second DATA step s'exécute sur la table mylib.shoes pour sous-ensemble davantage les données. Ce DATA step sélectionne uniquement les lignes où les valeurs de la variable Region sont "Canada". Les lignes sélectionnées sont ensuite écrites dans la table de sortie mylib.shoes2.
Copié !
1LIBNAME mylib ;
2 
3DATA mylib.shoes;
4 SET sashelp.shoes;
5 where Sales>=500000;
6RUN;
7PROC PRINT DATA=mylib.shoes;
8 var Region Product Sales;
9 RUN;
10 
11DATA mylib.shoes2;
12 SET mylib.shoes;
13 where Region="Canada";
14RUN;
15 
16PROC PRINT DATA=mylib.shoes2;
17 var Region Product Sales;
18RUN;
2 Bloc de code
DATA STEP Data
Explication :
Cet exemple utilise une expression WHERE composée pour sélectionner un sous-ensemble de données de la table d'entrée mylib.shoes. La procédure CASUTIL charge d'abord le jeu de données SAS sashelp.shoes dans CAS. Le DATA step s'exécute ensuite dans CAS pour sélectionner conditionnellement les lignes où les ventes sont supérieures à 500 000 $ ET la région est "Canada". L'expression WHERE composée se compose de deux expressions WHERE jointes par l'opérateur ET.
Copié !
1 
2DATA mylib.shoes;
3 SET mylib.shoes;
4 where Sales>=500000 and Region="Canada";
5 keep Region Product Sales;
6RUN;
7 
8PROC PRINT DATA=mylib.shoes; RUN;
3 Bloc de code
DATA STEP Data
Explication :
Dans l'exemple suivant, l'opérateur AND est utilisé dans l'instruction WHERE pour trouver les lignes basées sur les conditions pour l'âge et le sexe.
Copié !
1DATA class;
2 SET sashelp.class;
3 where sex="M" and age >= 15;
4RUN;
5PROC PRINT DATA=class;
6RUN;
4 Bloc de code
DATA STEP Data
Explication :
Cet exemple utilise l'opérateur OR pour trouver les lignes qui satisfont l'une ou l'autre des conditions.
Copié !
1DATA class;
2 SET sashelp.class;
3 where sex="M" or age>=15;
4RUN;
5PROC PRINT DATA=class;
6 title 'OR finds all Males and Anyone 15 Years or Older';
7RUN;
5 Bloc de code
DATA STEP Data
Explication :
Cet exemple utilise le symbole inférieur à (<) pour trouver les lignes qui satisfont les critères d'âge et de sexe.
Copié !
1DATA class;
2 SET sashelp.class;
3 where age < 15 and sex NE "M";
4RUN;
5PROC PRINT DATA=class;
6 title 'Finds Females
7 Older less than 15 Years';
8RUN;
6 Bloc de code
DATA STEP Data
Explication :
L'ordre dans lequel SAS traite les expressions jointes par des opérateurs booléens affecte la sortie. L'ordre des opérations par défaut est de traiter les expressions NOT en premier, les expressions AND ensuite, et les expressions OR en dernier.
Copié !
1DATA class;
2 SET sashelp.class;
3 where age>15 or height<60 and sex="F";
4RUN;
5PROC PRINT DATA=class;
6 title 'age > 15 OR height < 60 AND sex = F';
7RUN;
7 Bloc de code
DATA STEP Data
Explication :
Pour contrôler l'ordre d'évaluation, utilisez des parenthèses. Voici le même exemple, sauf que des parenthèses sont utilisées pour spécifier que l'expression OR est évaluée en premier, puis l'expression AND.
Copié !
1DATA class;
2 SET sashelp.class;
3 where (age>15 or height<60) and sex="F";
4RUN;
5PROC PRINT DATA=class;
6 title '(age > 15 OR height < 60) AND sex = F';
7RUN;
8 Bloc de code
DATA STEP Data
Explication :
Cet exemple utilise l'option d'ensemble de données WHERE= pour sélectionner conditionnellement des lignes du jeu de données sashelp.shoes.
Copié !
1DATA sales;
2 SET sashelp.shoes(where=(Region="Canada" and Sales<2000));
3RUN;
4PROC PRINT DATA=sales; RUN;
9 Bloc de code
DATA STEP
Explication :
Pour exécuter le DATA step de sorte que le traitement soit effectué sur le serveur CAS, vous pouvez spécifier l'option d'ensemble de données WHERE= sur la table d'entrée dans l'instruction SET. L'option d'ensemble de données WHERE= est prise en charge pour le traitement dans CAS uniquement lorsqu'elle est spécifiée sur la table CAS d'entrée (dans l'instruction SET). Si vous spécifiez l'option d'ensemble de données WHERE= sur la table CAS de sortie, vous n'obtiendrez pas d'erreur comme le montre l'exemple suivant.
Copié !
1/* Specify the WHERE= data set option on the output CAS
2 table (unsupported for CAS DATA step processing) */
3 
4DATA mylib.sales(where=(Region="Canada" and Sales<2000));
5 SET mylib.shoes;
6RUN;
7PROC PRINT DATA=mylib.sales; RUN;
10 Bloc de code
DATA STEP Data
Explication :
Dans l'exemple suivant, le premier DATA step crée un ensemble de données de sortie, mybaseball, et l'option index= ajoute un index simple à la variable team. Le second DATA step lit l'ensemble de données et sélectionne pour traitement uniquement les lignes où le nom de l'équipe est Atlanta.
Copié !
1DATA mybaseball(index=(team));
2 SET sashelp.baseball;
3RUN;
4 
5DATA mybaseball;
6 SET sashelp.baseball;
7 where Team="Atlanta";
8 keep Name Team Position;
9RUN;
10PROC PRINT DATA=mybaseball; RUN;
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.
« Soyez particulièrement vigilant lors de l'utilisation de l'option WHERE= sur les tables de sortie dans l'environnement CAS. Comme indiqué dans le guide, le filtrage doit être fait à l'entrée (SET) pour profiter de la puissance du calcul distribué. Si vous filtrez à la sortie, SAS risque de rapatrier toutes les données sur un seul nœud avant de les trier, perdant ainsi tout le bénéfice du Cloud. »