ETL CAS

SAS Viya : Comment exécuter un DATA Step 100% in-memory avec CAS

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

Pour garantir que votre étape DATA reste bien "dans le moteur" (In-Memory) et ne bascule pas en mode local (plus lent), vérifiez toujours que vos tables d'entrée et de sortie utilisent la même session CAS. C'est la clé pour une fluidité totale de vos pipelines de données.

Le script initialise une session CAS et assigne toutes les caslibs. Il utilise ensuite deux étapes DATA pour : 1) Copier la table 'baseball' de SASHELP vers la caslib 'casuser' sous le même nom. 2) Créer une nouvelle table 'baseball2' dans la caslib 'casuser' à partir de 'casuser.baseball', en calculant une nouvelle variable 'x' comme le ratio 'nruns' divisé par 'nhits'. L'ensemble du processus se déroule entièrement au sein du moteur Cloud Analytic Services (CAS).
Analyse des données

Type : SASHELP


La source principale des données est la table 'baseball' de la bibliothèque SASHELP, qui est une bibliothèque de données d'exemple fournie par SAS. Ces données sont ensuite copiées et manipulées au sein de la caslib 'casuser'.

1 Bloc de code
Configuration CAS
Explication :
Ce bloc configure la session CAS en activant la collecte de métriques et assigne toutes les caslibs disponibles, ce qui permet d'accéder et de manipuler des données stockées dans CAS.
Copié !
1cas sessopts=(metrics=true);
2caslib _all_ assign;
2 Bloc de code
DATA STEP Data
Explication :
Cette étape DATA crée une nouvelle table nommée 'baseball' dans la caslib 'casuser'. Elle copie toutes les observations et variables de la table 'sashelp.baseball' vers la table CAS, rendant les données disponibles pour le traitement distribué dans CAS.
Copié !
1 
2DATA casuser.baseball;
3SET sashelp.baseball;
4RUN;
5 
3 Bloc de code
DATA STEP Data
Explication :
Cette deuxième étape DATA crée une nouvelle table CAS nommée 'baseball2' à partir de la table 'casuser.baseball' précédemment créée. Elle introduit une nouvelle variable 'x' calculée comme le ratio des variables 'nruns' et 'nhits' pour chaque observation. Cette opération est exécutée directement dans CAS.
Copié !
1DATA casuser.baseball2;
2 SET casuser.baseball;
3 x=nruns/nhits;
4RUN;
Result
L'Astuce Pro
L'astuce technique primordiale pour garantir une exécution 100% in-memory réside dans la vérification de la bibliothèque source et de destination : en utilisant CASUSER pour les deux tables dans votre second DATA Step, vous forcez le moteur SAS à exécuter le code directement sur les noeuds de calcul CAS (workers) sans jamais rapatrier les données vers le client SAS. Pour confirmer ce comportement et mesurer l'efficacité du parallélisme, l'option sessopts=(metrics=true) est cruciale car elle affichera dans votre journal les statistiques réelles d'utilisation CPU et mémoire au niveau du serveur, vous permettant de valider que votre calcul de ratio x=nruns/nhits bénéficie bien de la puissance distribuée.
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


Documentation liée

Aucune documentation spécifique pour cette catégorie.