Publicado el :
ETL CREATION_INTERNE

Añadir una tabla CAS con el parámetro WHERE

Este código también está disponible en: Deutsch English Français
En espera de validación
La acción CAS 'table.append' se utiliza para transferir filas de una tabla fuente (en memoria o promovida) a una tabla destino existente en el CAS. El parámetro 'WHERE' en la opción 'source' permite especificar una condición lógica. Solo las filas de la tabla fuente que satisfacen esta condición se añadirán a la tabla destino. La ejecución se realiza en memoria distribuida en el servidor CAS, lo que está optimizado para grandes volúmenes de datos. La tabla destino debe existir previamente.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o tablas SASHELP cargadas en CAS.

1 Bloque de código
PROC CAS / DATA STEP Data
Explicación :
Este ejemplo inicializa dos tablas CAS, 'class_source' (a partir de SASHELP.CLASS) y 'class_target' (vacía). Luego utiliza 'table.append' para añadir todas las filas de 'class_source' a 'class_target' sin ninguna condición de filtrado. Finalmente, muestra el contenido de la tabla destino.
¡Copiado!
1/* Charger la table SASHELP.CLASS en CAS */
2PROC CASUTIL;
3 load DATA=sashelp.class outcaslib="casuser" casout="class_source" replace;
4RUN;
5 
6/* Créer une table cible vide avec la même structure en CAS */
7DATA casuser.class_target;
8 SET casuser.class_source(obs=0);
9RUN;
10 
11PROC CAS;
12 /* Ajouter toutes les lignes de class_source à class_target */
13 TABLE.append /
14 SOURCE={caslib='casuser', name='class_source'}
15 target={caslib='casuser', name='class_target'};
16RUN;
17 
18/* Vérifier le contenu de la table cible */
19PROC PRINT DATA=casuser.class_target;
20RUN;
2 Bloque de código
PROC CAS / DATA STEP Data
Explicación :
Este ejemplo carga la tabla completa SASHELP.CLASS en CAS bajo el nombre 'class_full'. Crea una tabla 'class_filtered' con algunas observaciones iniciales. Luego, utiliza 'table.append' con el parámetro 'where="Age >= 15"' para añadir solo las observaciones de 'class_full' donde la edad es de 15 años o más a la tabla 'class_filtered'. Se muestra el contenido final de 'class_filtered'.
¡Copiado!
1/* Charger la table SASHELP.CLASS en CAS */
2PROC CASUTIL;
3 load DATA=sashelp.class outcaslib="casuser" casout="class_full" replace;
4RUN;
5 
6/* Créer une table cible avec quelques données initiales */
7DATA casuser.class_filtered;
8 INPUT Name $ Sex $ Age Height Weight;
9 DATALINES;
10 Alfred M 14 69.0 112.5
11 Alice F 13 56.5 84.0
12 ;
13RUN;
14 
15PROC CAS;
16 /* Ajouter uniquement les étudiants dont l'âge est supérieur ou égal à 15 ans */
17 TABLE.append /
18 SOURCE={caslib='casuser', name='class_full', where="Age >= 15"}
19 target={caslib='casuser', name='class_filtered'};
20RUN;
21 
22/* Vérifier le contenu de la table cible */
23PROC PRINT DATA=casuser.class_filtered;
24RUN;
3 Bloque de código
PROC CAS / DATA STEP Data
Explicación :
Este ejemplo demuestra un caso avanzado donde los datos se transforman primero en una nueva tabla CAS ('students_processed') calculando una puntuación media y un estado. Luego, 'table.append' se usa para añadir a la tabla 'high_achievers' solo las observaciones de 'students_processed' que satisfacen una condición 'WHERE' compleja: el estado debe ser 'Excellent' Y el género debe ser 'Femenino'. Esto ilustra cómo combinar pasos de preparación de datos con una adición condicional.
¡Copiado!
1/* Créer une table source avec des données brutes en CAS */
2DATA casuser.students_raw;
3 INPUT StudentID Name $ Gender $ Score1 Score2;
4 DATALINES;
5 101 Jean M 85 92
6 102 Marie F 78 88
7 103 Pierre M 91 75
8 104 Sophie F 65 95
9 105 Paul M 80 81
10 ;
11RUN;
12 
13/* Créer une table cible avec des données initiales */
14DATA casuser.high_achievers;
15 INPUT StudentID Name $ Gender $ AverageScore STATUS$;
16 DATALINES;
17 201 Marc M 90 Initial
18 ;
19RUN;
20 
21PROC CAS;
22 /* Calculer le score moyen et déterminer un statut avant d'ajouter */
23 DATA casuser.students_processed;
24 SET casuser.students_raw;
25 AverageScore = (Score1 + Score2) / 2;
26 IF AverageScore >= 85 THEN STATUS = 'Excellent';
27 ELSE STATUS = 'Good';
28 RUN;
29 
30 /* Ajouter uniquement les étudiants 'Excellent' et de sexe féminin */
31 TABLE.append /
32 SOURCE={caslib='casuser', name='students_processed', where="Status = 'Excellent' AND Gender = 'F'"}
33 target={caslib='casuser', name='high_achievers'};
34RUN;
35 
36/* Vérifier le contenu de la table cible */
37PROC PRINT DATA=casuser.high_achievers;
38RUN;
4 Bloque de código
PROC CAS / DATA STEP Data
Explicación :
Este ejemplo crea una tabla SAS temporal 'temp_large' con 1000 observaciones, luego la carga y la 'promueve' como 'large_data_source' en CAS. También crea una tabla destino promovida vacía 'filtered_promoted'. Luego, utiliza 'table.append' para añadir a 'filtered_promoted' solo las filas donde 'Value < 10'. El aspecto Viya/CAS se destaca por el uso de tablas promovidas que son persistentes más allá de la sesión actual, y un bloque de limpieza final para eliminar todas las tablas CAS creadas durante los ejemplos.
¡Copiado!
1/* Créer une table source temporaire avec un grand nombre d'observations */
2DATA _null_;
3 DO i = 1 to 1000;
4 ID = i;
5 Value = mod(i, 100);
6 OUTPUT;
7 END;
8RUN;
9 
10PROC CASUTIL;
11 load DATA=work.temp_large outcaslib="casuser" casout="large_data_source" promote replace;
12RUN;
13 
14/* Créer une table cible promotée vide */
15PROC CASUTIL;
16 load DATA=work.temp_large(obs=0) outcaslib="casuser" casout="filtered_promoted" promote replace;
17RUN;
18 
19PROC CAS;
20 /* Ajouter des lignes à la table promotée 'filtered_promoted' avec une condition WHERE */
21 /* L'utilisation de 'promote' assure la persistance de la table au-delà de la session */
22 TABLE.append /
23 SOURCE={caslib='casuser', name='large_data_source', where="Value < 10"}
24 target={caslib='casuser', name='filtered_promoted'};
25RUN;
26 
27/* Vérifier le contenu de la table cible promotée */
28PROC PRINT DATA=casuser.filtered_promoted;
29RUN;
30 
31/* Nettoyage : supprimer les tables CAS après utilisation */
32PROC CAS;
33 TABLE.dropTable / caslib='casuser', name='large_data_source';
34 TABLE.dropTable / caslib='casuser', name='filtered_promoted';
35 TABLE.dropTable / caslib='casuser', name='students_raw';
36 TABLE.dropTable / caslib='casuser', name='high_achievers';
37 TABLE.dropTable / caslib='casuser', name='class_source';
38 TABLE.dropTable / caslib='casuser', name='class_target';
39 TABLE.dropTable / caslib='casuser', name='class_full';
40 TABLE.dropTable / caslib='casuser', name='class_filtered';
41 TABLE.dropTable / caslib='casuser', name='students_processed';
42RUN;
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.