Publicado el :
ETL CREATION_INTERNE

Cargar un conjunto de datos SAS en CAS como tabla distribuida

Este código también está disponible en: Deutsch English Français
En espera de validación
Cargar un conjunto de datos SAS© en CAS es un paso fundamental para aprovechar la potencia de cálculo distribuido y en memoria de SAS© Viya. La herramienta principal para esta tarea es el procedimiento CASUTIL, que, a través de su instrucción LOAD, permite copiar datos de manera eficiente. Este proceso generalmente implica especificar el conjunto de datos de origen (casdata), el nombre de la tabla CAS de destino (casout) y la caslib donde se almacenará la tabla. La opción PROMOTE se puede utilizar para hacer que la tabla sea visible y accesible para todas las sesiones CAS activas. La principal ventaja de este enfoque es la mejora significativa del rendimiento, ya que la carga del lado del servidor está optimizada para el procesamiento paralelo de grandes volúmenes de datos, en contraste con la carga secuencial del lado del cliente. Los usuarios también pueden refinar el conjunto de datos de origen utilizando las instrucciones KEEP o DROP en un paso DATA, antes de cargar en CAS.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o conjuntos de datos de la biblioteca SASHELP, garantizando su autonomía.

1 Bloque de código
DATA STEP / PROC CASUTIL Data
Explicación :
Este ejemplo ilustra la carga más sencilla de un conjunto de datos SAS (aquí, 'sample_data' creado a partir de SASHELP.CLASS) en CAS. El conjunto de datos se crea primero en la biblioteca 'work' de SAS. Luego, se utiliza PROC CASUTIL para cargar 'sample_data' en CAS con el nombre 'sample_data_cas' en la caslib 'CASUSER' por defecto, reemplazando cualquier tabla existente con el mismo nombre. Se incluye un paso de verificación a través de una acción CAS `table.tableinfo`.
¡Copiado!
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 Bloque de código
DATA STEP / PROC CASUTIL Data
Explicación :
Este ejemplo muestra cómo usar opciones comunes durante la carga. Se crea un conjunto de datos 'orders_local' con datos en línea. Luego se carga en la caslib 'CASUSER'. La opción `PROMOTE` se utiliza para hacer que la tabla 'orders_cas' sea globalmente accesible en la sesión CAS, lo que significa que otros usuarios o sesiones podrán acceder a ella si los permisos lo permiten. `REPLACE` asegura que si la tabla ya existe, será sobrescrita.
¡Copiado!
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 Bloque de código
PROC FORMAT / DATA STEP / PROC CASUTIL Data
Explicación :
Este ejemplo avanzado ilustra un escenario donde los datos se preparan y enriquecen antes de cargarlos en CAS. Se define un formato SAS personalizado ('$statusfmt') y se aplica a la variable 'Status' en un nuevo conjunto de datos 'employees_local'. Este conjunto de datos formateado se carga luego en CAS. Al recuperar (fetch) la tabla CAS, el formato se conserva y se muestra, demostrando que el proceso de carga respeta los atributos de las variables SAS, incluidos los formatos.
¡Copiado!
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 Bloque de código
DATA STEP / PROC CASUTIL / PROC CAS (Actions CAS) Data
Explicación :
Este ejemplo resalta la integración con el entorno CAS de Viya para el procesamiento distribuido. Comienza creando un conjunto de datos SAS filtrado ('filtered_class_local'). Este conjunto se carga luego en CAS. La parte clave es el uso de `proc cas` para ejecutar directamente una 'acción CAS' (`simple.summary`). Esta acción está diseñada para explotar la arquitectura distribuida de CAS para calcular la edad promedio por sexo de manera eficiente, demostrando el potencial de rendimiento del análisis en memoria en el servidor CAS. Se añade un bloque de limpieza final para eliminar las tablas creadas en CAS.
¡Copiado!
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;
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.