Publié le :
ETL CREATION_INTERNE

Parcours Détaillé d'un Programme DATA Step

Ce code est également disponible en : Deutsch English Español
En attente de validation
L'analyse fonctionnelle de ce document met en lumière l'intégration transparente du DATA Step traditionnel de SAS© avec le moteur de traitement distribué CAS. Il explique comment des instructions SAS© classiques telles que SET, KEEP et DROP fonctionnent dans CAS, en soulignant que le DATA Step s'exécute là où les données sont stockées. Le document aborde également le traitement multithread par défaut des DATA Steps dans CAS, les conditions nécessaires pour qu'un DATA Step s'exécute en CAS (tables d'entrée et de sortie devant être des tables CAS, ou table de sortie CAS avec au moins une variable), le rôle des caslibs comme conteneurs pour les fichiers et les tables en mémoire, et l'utilisation recommandée de PROC CASUTIL pour le chargement des jeux de données SAS© vers CAS. Enfin, il mentionne l'option système DSACCEL= pour contrôler l'emplacement d'exécution du DATA Step.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou la bibliothèque SASHELP, garantissant l'autonomie de chaque bloc de code.

1 Bloc de code
PROC CASUTIL / PROC PRINT Data
Explication :
Cet exemple initialise une session CAS et une libname associée, puis charge les 10 premières observations de la table 'cars' de la bibliothèque SASHELP dans une table CAS nommée 'cars_basic'. Enfin, il affiche les 10 premières observations de cette table CAS pour vérification.
Copié !
1cas casauto;
2LIBNAME mycas cas;
3caslib _all_ assign;
4 
5PROC CASUTIL;
6 load DATA=sashelp.cars
7 outcaslib='casuserhdfs'
8 casout='cars_basic' replace;
9RUN; QUIT;
10 
11PROC PRINT DATA=mycas.cars_basic(obs=10);
12title '10 premières observations de SASHELP.CARS dans CAS';
13RUN;
2 Bloc de code
DATA STEP Data
Explication :
Après avoir chargé la table 'cars' dans CAS, ce bloc de code crée une nouvelle table CAS, 'cars_transformed_mpg', en calculant une nouvelle variable 'CombinedMPG' à partir des variables MPG_Highway et MPG_City. Il utilise une pondération simple (40% autoroute, 60% ville) et formate la nouvelle variable, puis affiche les 10 premières lignes.
Copié !
1cas casauto;
2LIBNAME mycas cas;
3caslib _all_ assign;
4 
5PROC CASUTIL;
6 load DATA=sashelp.cars
7 outcaslib='casuserhdfs'
8 casout='cars_transformed' replace;
9RUN; QUIT;
10 
11DATA mycas.cars_transformed_mpg(promote=yes);
12 SET mycas.cars_transformed;
13 CombinedMPG = (MPG_Highway * 0.40) + (MPG_City * 0.60);
14 FORMAT CombinedMPG 5.1;
15RUN;
16 
17PROC PRINT DATA=mycas.cars_transformed_mpg(obs=10);
18 var Make Model CombinedMPG;
19 title 'MPG Combiné calculé (10 premières observations)';
20RUN;
3 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple charge d'abord les données 'cars' dans CAS. Ensuite, il exécute un DATA Step complexe en CAS qui filtre les véhicules pour inclure uniquement les SUV d'origine 'USA' ou les Sedans d'origine 'Asia'. Une nouvelle variable 'AvgMPG' est calculée. Le traitement 'BY Origin Type' permet de grouper les résultats, et un message est affiché dans le log à chaque nouveau groupe pour illustrer le traitement par groupe. Enfin, il affiche les résultats filtrés et traités.
Copié !
1cas casauto;
2LIBNAME mycas cas;
3caslib _all_ assign;
4 
5PROC CASUTIL;
6 load DATA=sashelp.cars
7 outcaslib='casuserhdfs'
8 casout='cars_filtered' replace;
9RUN; QUIT;
10 
11DATA mycas.cars_filtered_grouped(promote=yes);
12 SET mycas.cars_filtered;
13 BY Origin Type;
14 where (Type = 'SUV' and Origin = 'USA') or (Type = 'Sedan' and Origin = 'Asia');
15 AvgMPG = mean(MPG_City, MPG_Highway);
16 IF first.Origin THEN put '---- Nouvelle Origine et Type ----';
17 put Origin= Type= AvgMPG= Make=;
18 keep Origin Type Make AvgMPG;
19RUN;
20 
21PROC PRINT DATA=mycas.cars_filtered_grouped;
22 title 'MPG Moyen des SUV Américains et Sedans Asiatiques';
23RUN;
4 Bloc de code
PROC CASUTIL Data
Explication :
Cet exemple met en évidence les capacités de gestion de tables de PROC CASUTIL. Il crée d'abord une petite table CAS temporaire. Ensuite, il utilise 'LIST TABLES' pour voir les tables disponibles, 'CONTENTS' pour obtenir des informations détaillées sur la table temporaire, et 'DROPTABLE' pour la supprimer de la mémoire CAS. Une deuxième commande 'LIST TABLES' confirme la suppression. Cela démontre le cycle de vie de base d'une table CAS en mémoire.
Copié !
1cas casauto;
2LIBNAME mycas cas;
3caslib _all_ assign;
4 
5* Création d'une table CAS temporaire pour la démonstration;
6DATA mycas.temp_table(promote=yes);
7 x = 1;
8 y = 'Test';
9RUN;
10 
11PROC CASUTIL;
12 list tables caslib='casuserhdfs'; * Liste toutes les tables dans la caslib spécifiée;
13 contents casdata='temp_table'; * Affiche les détails de la table temp_table;
14 droptable casdata='temp_table'; * Supprime la table temp_table de la mémoire CAS;
15 list tables caslib='casuserhdfs'; * Vérifie que la table a été supprimée;
16RUN; QUIT;
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.