Publicado el :
DATA Step CREATION_INTERNE

Crear una Vista DATA Step

Este código también está disponible en: Deutsch English Français
En espera de validación
Una vista DATA Step puede ser creada a partir de una tabla CAS ejecutando el paso DATA localmente en una sesión de Base SAS©, y no en una sesión de servidor CAS. Las vistas deben almacenarse en una biblioteca de Base SAS© (creada con el motor V9). Aunque el paso DATA ejecutado en CAS no admite la opción VIEW=, una vista SAS© puede crearse utilizando un paso DATA ejecutado en SAS©, que utiliza una tabla CAS como entrada. Las vistas pueden contener variables VARCHAR y pueden leer valores de estas variables de vistas SAS©. Sin embargo, el paso DATA no puede leer directamente las variables VARCHAR contenidas en las tablas CAS u otras fuentes de datos sin pasar por una vista. Una vista DATA Step puede incluir variables VARCHAR, pero un conjunto de datos SAS© no puede hacerlo directamente. Finalmente, las vistas pueden acceder a conjuntos de datos almacenados en bibliotecas no Base (incluido CAS), pero las vistas de actualización no son compatibles.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o tablas creadas directamente en CAS para asegurar su autonomía.

1 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo demuestra la creación de una vista DATA Step simple 'MaVueBasique'. Primero se crea un conjunto de datos fuente 'MonJeuDeDonnees' con datalines. Luego, el paso DATA utiliza la opción VIEW= para definir una vista que calcula el año de nacimiento basado en la edad. No se crea ninguna tabla física para 'MaVueBasique', solo se almacena su descriptor. Se utilizan los procedimientos PROC PRINT y PROC CONTENTS para visualizar el contenido y la estructura de la vista.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo crea una vista DATA Step llamada 'VueIMC' que realiza cálculos más elaborados y aplica un formato. Después de crear un conjunto de datos 'Patients', el paso DATA calcula el Índice de Masa Corporal (IMC) y crea una variable 'Statut' basada en el género. La variable IMC se formatea para mostrar solo un decimal. Esto ilustra cómo las vistas pueden incorporar lógicas de transformación y formato sin materializar los datos transformados.
¡Copiado!
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;
3 Bloque de código
DATA STEP, PROC CAS, PROC CONTENTS Data
Explicación :
Este ejemplo avanzado muestra cómo una vista DATA Step interactúa con una tabla CAS que contiene variables VARCHAR. Primero, se crea y carga una tabla CAS 'MaTableCAS' con datos que incluyen una columna 'Description' de tipo VARCHAR. Luego, se define una vista DATA Step 'VueCasVARCHAR' a partir de esta tabla CAS. Esta vista calcula la longitud de la variable VARCHAR. Este ejemplo es crucial porque demuestra que, aunque las tablas CAS manejan VARCHAR, una vista DATA Step puede leerlas y manipularlas de manera eficiente, incluso cuando el paso DATA se ejecuta localmente con una tabla CAS remota como entrada.
¡Copiado!
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 Bloque de código
DATA STEP, PROC CAS Data
Explicación :
Este ejemplo ilustra una capacidad avanzada de las vistas DATA Step: la unión de múltiples tablas CAS y el filtrado de resultados. Primero se crean y cargan dos tablas CAS, 'Employes' y 'Projets'. Luego, se define una vista DATA Step 'VueRHProjets' fusionando estas dos tablas mediante la instrucción MERGE y utilizando la variable 'EmpID' para la unión (BY EmpID). Se aplica un filtro (WHERE Departement = 'RH') para incluir solo a los empleados del departamento de recursos humanos, y solo se conservan las columnas relevantes. Esto demuestra el poder de las vistas para crear agregaciones o subconjuntos de datos complejos sin generar nuevas tablas físicas, optimizando así el uso de los recursos en la memoria CAS.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved.