Publié le :
ETL SASHELP

Résultats Répétables avec DATA Step Distribué (Groupes BY)

Ce code est également disponible en : Deutsch Español
Snippet validé
Le script commence par configurer l'environnement CAS en attribuant une CASLIB nommée CASWORK à la caslib 'casuser' et en définissant CASWORK comme bibliothèque utilisateur par défaut pour les tables à un seul niveau. Il lie ensuite toutes les librefs CAS et les CASLIB par défaut au client SAS©. Un DATA Step est utilisé pour charger l'ensemble de données 'baseball' de la bibliothèque 'sashelp' dans une table CAS nommée 'caswork.baseball', tout en ajoutant une variable unique '_n_' appelée 'row_id'. Un second DATA Step traite ensuite 'caswork.baseball' en utilisant une instruction BY sur les variables 'div', 'team' et 'row_id' (ajoutée pour la reproductibilité). L'instruction 'if first.team then output;' garantit que seule la première observation de chaque équipe est sélectionnée, produisant ainsi des résultats cohérents et reproductibles dans un environnement distribué.
Analyse des données

Type : SASHELP


Le script utilise le jeu de données 'baseball' provenant de la bibliothèque standard 'sashelp', qui est intrinsèquement disponible dans SAS.

1 Bloc de code
Configuration CAS
Explication :
Ce bloc configure l'accès à CAS. Il crée une bibliothèque SAS ('CASWORK') pointant vers une caslib CAS ('casuser'), définit cette bibliothèque comme emplacement par défaut pour les tables à un seul niveau, et assigne toutes les caslibs disponibles à la session SAS. La macro '%put &_sessref_;' affiche l'identifiant de la session CAS active.
Copié !
1LIBNAME CASWORK cas caslib=casuser;
2options USER = CASWORK;
3caslib _all_ assign;
4%put &_sessref_;
2 Bloc de code
DATA STEP Data
Explication :
Ce DATA Step charge le jeu de données 'baseball' de la bibliothèque 'sashelp' (une bibliothèque SAS par défaut) vers une nouvelle table CAS nommée 'baseball' dans la caslib 'caswork'. Il crée également une nouvelle variable 'row_id' qui est une séquence numérique unique pour chaque ligne ('_n_'). Cette variable est cruciale pour garantir la reproductibilité dans un environnement distribué.
Copié !
1DATA caswork.baseball;
2 SET sashelp.baseball;
3 row_id=_n_;
4RUN;
3 Bloc de code
DATA STEP Data
Explication :
Ce DATA Step traite la table CAS 'caswork.baseball'. L'instruction BY spécifie le tri par 'div', 'team' et l'identifiant unique 'row_id'. L'expression 'if first.team then output;' sélectionne uniquement la première observation pour chaque combinaison unique de 'team'. L'inclusion de 'row_id' dans l'instruction BY assure que, même dans un environnement CAS distribué où l'ordre des lignes peut varier entre les nœuds, la sélection du 'first.team' reste déterministe et reproductible.
Copié !
1DATA caswork.nodup;
2 SET caswork.baseball;
3 BY div team row_id ;
4 IF first.team THEN OUTPUT;
5RUN;
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


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Ne supposez jamais que vos données sont triées dans CAS. Si votre logique métier dépend de l'ordre des observations, créez systématiquement une clé de séquence lors du chargement initial. »