Publié le :
DATA Step CREATION_INTERNE

Créer une Vue DATA Step

Ce code est également disponible en : Deutsch English Español
Snippet validé
Une vue DATA Step peut être créée à partir d'une table CAS en exécutant l'étape DATA localement dans une session Base SAS©, et non dans une session de serveur CAS. Les vues doivent être stockées dans une bibliothèque Base SAS© (créée avec le moteur V9). Bien que le DATA Step exécuté dans CAS ne prenne pas en charge l'option VIEW=, une vue SAS© peut être créée en utilisant une étape DATA exécutée dans SAS©, qui utilise une table CAS comme entrée. Les vues peuvent contenir des variables VARCHAR et peuvent lire des valeurs de ces variables à partir de vues SAS©. Cependant, l'étape DATA ne peut pas lire directement les variables VARCHAR contenues dans les tables CAS ou d'autres sources de données sans passer par une vue. Une vue DATA Step peut inclure des variables VARCHAR, mais un jeu de données SAS© ne le peut pas directement. Enfin, les vues peuvent accéder aux jeux de données stockés dans des bibliothèques non-Base (y compris CAS), mais les vues de mise à jour ne sont pas prises en charge.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou des tables créées directement dans CAS pour assurer leur autonomie.

1 Bloc de code
DATA STEP Data
Explication :
Cet exemple démontre la création d'une vue DATA Step simple 'MaVueBasique'. Un jeu de données source 'MonJeuDeDonnees' est d'abord créé avec des datalines. Ensuite, l'étape DATA utilise l'option VIEW= pour définir une vue qui calcule l'année de naissance basée sur l'âge. Aucune table physique n'est créée pour 'MaVueBasique', seul son descripteur est stocké. Les procédures PROC PRINT et PROC CONTENTS sont utilisées pour visualiser le contenu et la structure de la vue.
Copié !
1DATA MonJeuDeDonnees;
2 INPUT ID Nom $ Age;
3 DATALINES;
41 Jean 25
52 Marie 30
63 Pierre 22
7;
8RUN;
9 
10DATA MaVueBasique / view=MaVueBasique;
11 SET MonJeuDeDonnees;
12 AnneeNaissance = 2025 - Age;
13RUN;
14 
15PROC PRINT DATA=MaVueBasique; RUN;
16PROC CONTENTS DATA=MaVueBasique; RUN;
2 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée une vue DATA Step nommée 'VueIMC' qui effectue des calculs plus élaborés et applique un formatage. Après la création d'un jeu de données 'Patients', l'étape DATA calcule l'Indice de Masse Corporelle (IMC) et crée une variable 'Statut' basée sur le genre. La variable IMC est formatée pour n'afficher qu'une décimale. Ceci illustre comment les vues peuvent incorporer des logiques de transformation et de mise en forme sans matérialiser les données transformées.
Copié !
1DATA Patients;
2 INPUT PatientID Genre $ Poids Taille;
3 DATALINES;
41 H 70 175
52 F 60 160
63 H 85 180
74 F 55 165
8;
9RUN;
10 
11DATA VueIMC / view=VueIMC;
12 SET Patients;
13 IMC = Poids / (Taille/100)**2;
14 FORMAT IMC 5.1;
15 IF Genre = 'F' THEN Statut = 'Femme';
16 ELSE Statut = 'Homme';
17 LENGTH Statut $ 5;
18RUN;
19 
20PROC PRINT DATA=VueIMC; RUN;
Résultat Visuel
Result
3 Bloc de code
DATA STEP, PROC CAS, PROC CONTENTS Data
Explication :
Cet exemple avancé montre comment une vue DATA Step interagit avec une table CAS contenant des variables VARCHAR. D'abord, une table CAS 'MaTableCAS' est créée et chargée avec des données incluant une colonne 'Description' de type VARCHAR. Ensuite, une vue DATA Step 'VueCasVARCHAR' est définie à partir de cette table CAS. Cette vue calcule la longueur de la variable VARCHAR. Cet exemple est crucial car il démontre que, bien que les tables CAS gèrent les VARCHAR, une vue DATA Step peut les lire et les manipuler efficacement, y compris lorsque le DATA Step s'exécute en local avec une table distante CAS en entrée.
Copié !
1LIBNAME mycas cas;
2 
3DATA _null_;
4 file _webout;
5 put '{ "casServer": { "server": "cas-shared-default", "port": 80 } }';
6RUN;
7 
8PROC CAS;
9 SESSION casauto;
10 TABLE.droptable / caslib='casuser' name='MaTableCAS' quiet=true;
11 DATA = {{name='ID', type='double', LENGTH=8},
12 {name='Description', type='varchar', LENGTH=50}};
13 TABLE.addtable / caslib='casuser' name='MaTableCAS' promote=true
14 columns=DATA;
15 DATA.appendtable / caslib='casuser' target='MaTableCAS'
16 casdata={{ID=1, Description='Premier article'},
17 {ID=2, Description='Deuxième article plus long'},
18 {ID=3, Description='Troisième'}};
19 PRINT 'Table CAS MaTableCAS créée avec VARCHAR.';
20QUIT;
21 
22DATA VueCasVARCHAR / view=VueCasVARCHAR;
23 SET mycas.MaTableCAS;
24 LongueurDescription = LENGTH(Description);
25RUN;
26 
27PROC PRINT DATA=VueCasVARCHAR; RUN;
28PROC CONTENTS DATA=VueCasVARCHAR; RUN;
4 Bloc de code
DATA STEP, PROC CAS Data
Explication :
Cet exemple illustre une capacité avancée des vues DATA Step : la jointure de plusieurs tables CAS et le filtrage des résultats. Deux tables CAS, 'Employes' et 'Projets', sont d'abord créées et chargées. Ensuite, une vue DATA Step 'VueRHProjets' est définie en fusionnant ces deux tables via l'instruction MERGE et en utilisant la variable 'EmpID' pour la jointure (BY EmpID). Un filtre (WHERE Departement = 'RH') est appliqué pour n'inclure que les employés du département des ressources humaines, et seules les colonnes pertinentes sont conservées. Cela montre la puissance des vues pour créer des agrégations ou des sous-ensembles de données complexes sans générer de nouvelles tables physiques, optimisant ainsi l'utilisation des ressources en mémoire CAS.
Copié !
1LIBNAME mycas cas;
2 
3PROC CAS;
4 SESSION casauto;
5 TABLE.droptable / caslib='casuser' name='Employes' quiet=true;
6 DATA Employes;
7 INPUT EmpID Nom $ Departement $ Salaire;
8 DATALINES;
9 101 Jean RH 50000
10 102 Marie IT 60000
11 103 Pierre RH 55000
12 104 Sophie IT 62000
13 ;
14 RUN;
15 TABLE.addtable / caslib='casuser' name='Employes' promote=true;
16 
17 TABLE.droptable / caslib='casuser' name='Projets' quiet=true;
18 DATA Projets;
19 INPUT ProjectID EmpID $ NomProjet $;
20 DATALINES;
21 P1 101 ProjetX
22 P2 102 ProjetY
23 P3 101 ProjetZ
24 ;
25 RUN;
26 TABLE.addtable / caslib='casuser' name='Projets' promote=true;
27 PRINT 'Tables CAS Employes et Projets créées.';
28QUIT;
29 
30DATA VueRHProjets / view=VueRHProjets;
31 MERGE Employes (in=e) Projets (in=p);
32 BY EmpID;
33 IF e and p;
34 where Departement = 'RH';
35 keep EmpID Nom NomProjet Salaire;
36RUN;
37 
38PROC PRINT DATA=VueRHProjets; RUN;
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.


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« Utilisez cette méthode pour préparer vos données avant un rapport ou un export complexe. Gardez toutefois en tête que le traitement n'étant pas distribué sur tous les nœuds CAS, les performances dépendront de la puissance de votre session SAS local »