Publié le :
ETL SASHELP

Exemple d'agrégation GROUPBY avec CASL et FedSQL

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script initialise un environnement CAS en configurant une libname 'CASWORK' pour la caslib 'casuser' et en redirigeant les tables à un seul niveau vers cette caslib. Il charge ensuite le jeu de données 'sashelp.baseball' dans une table CAS nommée 'casuser.baseball'. Une étape de nettoyage supprime une table agrégée précédente ('casuser.baseball_groupby') si elle existe. Deux méthodes d'agrégation sont ensuite illustrées : la première utilise 'PROC FEDSQL' pour calculer la somme des coups ('nhits') groupée par division ('div') et équipe ('team') et stocke le résultat dans 'baseball_groupby'. La seconde approche utilise l'action CAS 'simple.groupBy' via 'PROC CAS' pour effectuer une agrégation similaire sur la table 'baseball' en sommant 'nhits' et en groupant par 'DIV' et 'TEAM', avec le résultat stocké dans 'casl_baseball_groupby'.
Analyse des données

Type : SASHELP


Le jeu de données source est 'sashelp.baseball', une table de démonstration intégrée à SAS. Cette table est ensuite copiée dans le moteur CAS sous 'casuser.baseball' pour permettre les opérations CAS.

1 Bloc de code
Configuration CAS
Explication :
Ce bloc configure l'accès au moteur Cloud Analytic Services (CAS). Il définit une libname 'CASWORK' qui pointe vers la caslib 'casuser', permettant aux tables CAS d'être référencées comme des tables SAS. L'option 'options USER = CASWORK;' redirige la création de tables SAS à un seul niveau vers cette caslib CAS, assurant qu'elles sont créées dans CAS. Enfin, 'caslib _all_ assign;' garantit que toutes les caslibs sont activées et prêtes à l'emploi.
Copié !
1/* CAS Enabled */
2/* CASL GROUPBY Action Example */
3 
4/* LIBNAME using the CAS engine */
5LIBNAME CASWORK cas caslib=casuser;
6 
7/* Changing the default location of all one level named tables */
8/* from SASWORK to CASWORK */
9options USER = CASWORK;
10 
11%put &_sessref_;
12 
13caslib _all_ assign;
2 Bloc de code
DATA STEP Data
Explication :
Ce DATA STEP crée une nouvelle table CAS nommée 'casuser.baseball' en copiant le contenu du jeu de données SAS intégré 'sashelp.baseball'. Cela rend les données disponibles dans l'environnement CAS pour les traitements ultérieurs.
Copié !
1 
2DATA casuser.baseball;
3SET sashelp.baseball;
4RUN;
5 
3 Bloc de code
PROC DELETE
Explication :
Ce bloc utilise 'PROC DELETE' pour supprimer la table 'casuser.baseball_groupby' si elle existe. C'est une bonne pratique de nettoyage avant de recréer une table avec le même nom, évitant ainsi les erreurs ou les données obsolètes.
Copié !
1PROC DELETE DATA=casuser.baseball_groupby;
2RUN;
4 Bloc de code
PROC FEDSQL Data
Explication :
Ce bloc utilise 'PROC FEDSQL' pour effectuer une agrégation de données directement dans CAS. L'option 'options caslib="casuser"' définit la caslib par défaut pour les opérations FEDSQL. La requête SQL calcule la somme des coups ('nhits') et regroupe les résultats par 'div' (division) et 'team' (équipe), créant une nouvelle table CAS nommée 'baseball_groupby'.
Copié !
1options caslib="casuser";
2PROC FEDSQL sessref=casauto;
3 create TABLE baseball_groupby
4 as
5 (select sum(nhits) as nhits_sum
6 from baseball
7 group BY div, team) ;
8QUIT;
5 Bloc de code
PROC CAS (Action simple.groupBy) Data
Explication :
Ce bloc utilise 'PROC CAS' pour interagir avec le moteur CAS et exécuter une action CAS spécifique : 'simple.groupBy'. Cette action effectue une agrégation. Elle prend en entrée les variables 'DIV' et 'TEAM' pour le regroupement ('inputs'), 'nhits' comme variable de pondération/sommation ('weight'), et 'SUM' comme fonction d'agrégation ('aggregator'). La table source est 'baseball' et le résultat est enregistré dans une nouvelle table CAS nommée 'casl_baseball_groupby', en remplaçant toute table existante du même nom.
Copié !
1PROC CAS;
2 SESSION casauto;
3 SIMPLE.groupBy RESULT=r STATUS=s /
4 inputs={"DIV" "TEAM"},
5 weight="nhits",
6 aggregator="SUM",
7 TABLE={name="baseball"},
8 casout={name="casl_baseball_groupby",
9 replace=true};
10RUN;
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 © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0