Publié le :
ETL SASHELP

Exemples de Jointures en CASL et FedSQL

Ce code est également disponible en : Deutsch English Español
Snippet validé
L'analyse fonctionnelle de ce script SAS© se décompose en plusieurs étapes principales. Initialement, il configure une session CAS et assigne toutes les 'caslibs' disponibles. Ensuite, il prépare deux tables CAS (baseball_location et baseball_stats) dans la bibliothèque 'casuser' à partir de la table sashelp.baseball, en séparant les informations de localisation des statistiques. Après avoir défini 'casuser' comme la 'caslib' active, le script procède à l'illustration de trois types de jointures. La première utilise PROC FEDSQL pour un 'LEFT JOIN' standard. Les deux suivantes sont des exemples de jointures CASL plus avancées, exploitant les actions 'dlJoin' de l'ensemble 'deepLearn' et 'searchJoin' de l'ensemble 'searchAnalytics'. Chaque méthode crée une nouvelle table CAS résultante de la jointure.
Analyse des données

Type : SASHELP


Les données source proviennent de la table standard 'sashelp.baseball'. Deux tables CAS intermédiaires, 'casuser.baseball_location' et 'casuser.baseball_stats', sont créées à partir de cette source pour faciliter les démonstrations de jointure. Aucune donnée externe n'est directement lue en dehors de 'sashelp'.

1 Bloc de code
CAS setup
Explication :
Ce bloc initialise une session CAS et assigne toutes les caslibs disponibles, permettant l'accès et la manipulation des données en mémoire CAS. La ligne commentée `cas casauto terminate;` suggère une option pour terminer une session CAS existante.
Copié !
1/* cas casauto terminate;
2*/
3cas;
4caslib _all_ assign;
5 
2 Bloc de code
DATA STEP Data
Explication :
Création d'une nouvelle table CAS nommée 'baseball_location' dans la caslib 'casuser'. Cette table est dérivée de 'sashelp.baseball', en ne conservant que les colonnes relatives à l'identification du joueur et à sa position/équipe.
Copié !
1DATA casuser.baseball_location;
2 SET sashelp.baseball;
3 keep name team div division league position;
4RUN;
3 Bloc de code
DATA STEP Data
Explication :
Création d'une seconde table CAS nommée 'baseball_stats' dans la caslib 'casuser'. Cette table est également dérivée de 'sashelp.baseball', mais toutes les colonnes de localisation et d'équipe sont supprimées pour isoler les statistiques des joueurs.
Copié !
1DATA casuser.baseball_stats;
2 SET sashelp.baseball;
3 drop team div division league position ;
4RUN;
4 Bloc de code
OPTIONS Statement
Explication :
Définit 'casuser' comme la caslib active par défaut pour les opérations CAS suivantes, simplifiant ainsi la syntaxe pour référencer les tables dans cette bibliothèque.
Copié !
1/* set the active CASLIB */
2options caslib=casuser;
3 
5 Bloc de code
PROC FEDSQL Data
Explication :
Exécute une requête FedSQL pour effectuer une jointure gauche (LEFT JOIN) entre les tables 'baseball_location' et 'baseball_stats' sur la colonne 'name'. Le résultat est stocké dans une nouvelle table CAS nommée 'fedsql'.
Copié !
1/* FedSQL Left join example */
2PROC FEDSQL sessref=casauto;
3 create TABLE fedsql as
4 select distinct a.div, a.division, a.league, a.position, a.team, b.*
5 from baseball_location as a left join
6 baseball_stats as b
7 on a.name=b.name;
8QUIT;
6 Bloc de code
PROC CAS
Explication :
Charge les ensembles d'actions CASL 'searchAnalytics' et 'deepLearn'. Ces ensembles d'actions contiennent des fonctionnalités avancées, y compris des actions de jointure spécifiques qui seront utilisées dans les blocs suivants.
Copié !
1/* CASL Join Examples */
2PROC CAS;
3LOADACTIONSET 'searchAnalytics';
4LOADACTIONSET 'deepLearn';
5QUIT;
7 Bloc de code
PROC CAS (deepLearn.dlJoin) Data
Explication :
Démontre l'utilisation de l'action 'dlJoin' de l'ensemble 'deepLearn' pour réaliser une jointure gauche. Elle joint 'baseball_location' avec 'baseball_stats' en utilisant la colonne 'name' comme identifiant, et crée une table 'dlJoin' en sortie.
Copié !
1/* Deep Learning Action Set dljon action: Examples */
2/* joinType="APPEND" | "FULL" | "INNER" | "LEFT" | "RIGHT" */
3PROC CAS;
4 DEEPLEARN.dlJoin /
5 joinType="LEFT"
6 annotatedTable={name="baseball_location"}
7 casOut={name="dlJoin", replace=TRUE}
8 id="name"
9 TABLE={name="baseball_stats"};
10 RUN;
11QUIT;
8 Bloc de code
PROC CAS (searchAnalytics.searchJoin) Data
Explication :
Illustre l'action 'searchJoin' de l'ensemble 'searchAnalytics' pour une jointure gauche. Elle joint 'baseball_location' et 'baseball_stats' sur la colonne 'name', mais avec une spécification plus détaillée des colonnes, y compris un renommage pour distinguer les colonnes 'name' des tables gauche et droite. Le résultat est enregistré dans la table 'searchJoin'.
Copié !
1/* searchAnalytics Action Set searchJoin action: Examples */
2/* joinType="APPEND" | "FULL" | "INNER" | "LEFT" | "RIGHT" */
3PROC CAS;
4 searchAnalytics.searchJoin /
5 joinType="LEFT"
6 casOut={name="searchJoin", replace=TRUE}
7 leftTable={columns={{isKey=TRUE, name="name"},
8 {name="name",
9 reName="name_left"
10 }
11 }
12 TABLE={name="baseball_location"}
13 }
14 rightTable={columns={{isKey=TRUE, name="name"},
15 {name="name",
16 reName="name_right"
17 }
18 }
19 TABLE={name="baseball_stats"}
20 };
21RUN;
22QUIT;
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
Michael
Responsable de l'infrastructure Viya.
« Pour des jointures simples, restez sur FEDSQL. Pour des traitements intégrés dans des modèles analytiques complexes ou nécessitant une logique métier avancée, passez par les actions CASL pour un contrôle total sur l'exécution »