Publié le :
ETL CREATION_INTERNE

Charger un jeu de données SAS dans CAS en tant que table distribuée

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le chargement d'un jeu de données SAS© vers CAS est une étape fondamentale pour exploiter la puissance de calcul distribué et en mémoire de SAS© Viya. L'outil principal pour cette tâche est la procédure CASUTIL, qui, via son instruction LOAD, permet de copier efficacement les données. Ce processus implique généralement de spécifier le jeu de données source (casdata), le nom de la table CAS de destination (casout), et la caslib où la table sera stockée. L'option PROMOTE peut être utilisée pour rendre la table visible et accessible à toutes les sessions CAS actives. L'avantage principal de cette approche est l'amélioration significative des performances, car le chargement côté serveur est optimisé pour le traitement parallèle des grands volumes de données, contrastant avec le chargement séquentiel côté client. Les utilisateurs peuvent également affiner le jeu de données source à l'aide des instructions KEEP ou DROP dans une étape DATA, avant le chargement dans CAS.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou des jeux de données de la bibliothèque SASHELP, garantissant leur autonomie.

1 Bloc de code
DATA STEP / PROC CASUTIL Data
Explication :
Cet exemple illustre le chargement le plus simple d'un jeu de données SAS (ici, 'sample_data' créé à partir de SASHELP.CLASS) vers CAS. Le jeu de données est d'abord créé dans la bibliothèque 'work' de SAS. Ensuite, PROC CASUTIL est utilisé pour charger 'sample_data' dans CAS sous le nom 'sample_data_cas' dans la caslib 'CASUSER' par défaut, en remplaçant toute table existante du même nom. Une étape de vérification via une action CAS `table.tableinfo` est incluse.
Copié !
1LIBNAME mycas cas;
2 
3/* Crée un jeu de données SAS dans la bibliothèque WORK */
4DATA work.sample_data;
5 SET sashelp.class;
6 keep name sex age;
7RUN;
8 
9/* Charge le jeu de données SAS dans CAS (caslib par défaut: CASUSER) */
10PROC CASUTIL;
11 load casdata="sample_data" casout="sample_data_cas" replace;
12RUN;
13 
14/* Vérifie la table chargée dans CAS */
15PROC CAS;
16 TABLE.tableinfo RESULT=info / name="sample_data_cas" caslib="CASUSER";
17 PRINT info;
18QUIT;
2 Bloc de code
DATA STEP / PROC CASUTIL Data
Explication :
Cet exemple montre comment utiliser des options courantes lors du chargement. Un jeu de données 'orders_local' est créé avec des données en ligne. Il est ensuite chargé dans la caslib 'CASUSER'. L'option `PROMOTE` est utilisée pour rendre la table 'orders_cas' globalement accessible dans la session CAS, ce qui signifie que d'autres utilisateurs ou sessions pourront y accéder si les permissions le permettent. `REPLACE` assure que si la table existe déjà, elle sera écrasée.
Copié !
1LIBNAME mycas cas;
2 
3/* Création d'un jeu de données SAS local à charger */
4DATA work.orders_local;
5 INPUT OrderID Customer $ Amount;
6 DATALINES;
71001 Alice 250.00
81002 Bob 120.50
91003 Alice 300.00
101004 Charlie 80.25
11;
12RUN;
13 
14/* Charge le jeu de données SAS dans une caslib spécifique et le promeut */
15PROC CASUTIL;
16 load casdata="orders_local" casout="orders_cas" caslib="CASUSER" promote replace;
17RUN;
18 
19/* Vérification de la table promue dans CAS */
20PROC CAS;
21 TABLE.tableinfo RESULT=info / name="orders_cas" caslib="CASUSER";
22 PRINT info;
23QUIT;
3 Bloc de code
PROC FORMAT / DATA STEP / PROC CASUTIL Data
Explication :
Cet exemple avancé illustre un scénario où les données sont préparées et enrichies avant le chargement dans CAS. Un format SAS personnalisé ('$statusfmt') est défini et appliqué à la variable 'Status' dans un nouveau jeu de données 'employees_local'. Ce jeu de données formaté est ensuite chargé dans CAS. Lors de la récupération (fetch) de la table CAS, le format est conservé et affiché, démontrant que le processus de chargement respecte les attributs des variables SAS, y compris les formats.
Copié !
1LIBNAME mycas cas;
2 
3/* Définition d'un format personnalisé pour une variable */
4PROC FORMAT;
5 value $statusfmt 'A' = 'Actif'
6 'I' = 'Inactif'
7 other = 'Inconnu';
8RUN;
9 
10/* Création d'un jeu de données SAS avec une variable à formater */
11DATA work.employees_local;
12 INPUT EmpID Name $ STATUS $;
13 FORMAT STATUS $statusfmt.; /* Applique le format */
14 DATALINES;
15201 John A
16202 Jane I
17203 Mike A
18204 Sara X
19;
20RUN;
21 
22/* Chargement du jeu de données formaté dans CAS */
23PROC CASUTIL;
24 load casdata="employees_local" casout="employees_cas" caslib="CASUSER" replace;
25RUN;
26 
27/* Vérification et affichage pour voir le format appliqué */
28PROC CAS;
29 TABLE.fetch RESULT=r / TABLE={name="employees_cas", caslib="CASUSER"};
30 PRINT r.Fetch;
31QUIT;
4 Bloc de code
DATA STEP / PROC CASUTIL / PROC CAS (Actions CAS) Data
Explication :
Cet exemple met en évidence l'intégration avec l'environnement CAS de Viya pour le traitement distribué. Il commence par créer un jeu de données SAS filtré ('filtered_class_local'). Ce jeu est ensuite chargé dans CAS. La partie clé est l'utilisation de `proc cas` pour exécuter directement une 'action CAS' (`simple.summary`). Cette action est conçue pour exploiter l'architecture distribuée de CAS afin de calculer la moyenne d'âge par sexe de manière efficace, démontrant le potentiel de performance de l'analyse en mémoire sur le serveur CAS. Un bloc de nettoyage final est ajouté pour supprimer les tables créées dans CAS.
Copié !
1LIBNAME mycas cas;
2 
3/* Crée un sous-ensemble du jeu de données SASHELP.CLASS avec un filtre */
4DATA work.filtered_class_local;
5 SET sashelp.class (where=(age >= 12));
6 keep name sex age;
7RUN;
8 
9/* Charge le sous-ensemble dans CAS */
10PROC CASUTIL;
11 load casdata="filtered_class_local" casout="filtered_class_cas" caslib="CASUSER" replace;
12RUN;
13 
14/* Utilise une action CAS (simple.summary) pour effectuer une agrégation distribuée */
15PROC CAS;
16 SIMPLE.summary RESULT=summary_res /
17 TABLE={name="filtered_class_cas", caslib="CASUSER"},
18 groupby={"sex"},
19 inputs={"age"};
20 PRINT summary_res;
21QUIT;
22 
23/* Nettoyage : suppression des tables CAS créées (facultatif) */
24PROC CASUTIL;
25 droptable casdata="sample_data_cas" caslib="CASUSER";
26 droptable casdata="orders_cas" caslib="CASUSER";
27 droptable casdata="employees_cas" caslib="CASUSER";
28 droptable casdata="filtered_class_cas" caslib="CASUSER";
29RUN;
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.