La acción `upload` permite transferir datos desde un archivo cliente o un archivo temporal del lado del cliente a una tabla en memoria de CAS. En este ejemplo, `PROC HTTP` se utiliza primero para recuperar un archivo CSV de una URL remota y guardarlo temporalmente. Luego, la acción `upload` se invoca a través de `PROC CAS` para leer este archivo temporal y enviarlo como una tabla CAS. Opciones como `casOut` permiten especificar el nombre de la tabla de destino en CAS y gestionar el reemplazo (`replace=True`). La opción `importOptions={fileType="csv"}` asegura que el archivo se interprete correctamente como un CSV. Una vez cargada la tabla, se ejecuta una acción `simple.summary` para proporcionar estadísticas descriptivas agrupadas por una variable, demostrando así el procesamiento de datos en el entorno CAS.
Análisis de datos
Type : FICHIER_EXTERNE_SIMULE_OU_CREATION_INTERNE
Los ejemplos crean datos CSV internos o simulan archivos externos para asegurar su autonomía.
1 Bloque de código
PROC CAS / DATA step Data
Explicación : Este ejemplo muestra la carga directa de un pequeño archivo CSV creado al vuelo a través de un `DATA step` en SAS, y luego transferido a CAS. La declaración `filename` con `temp` crea un archivo temporal, cuya ruta se recupera mediante `%sysfunc(pathname(mydata))`. La acción `table.upload` se utiliza luego para cargar este archivo en la sesión CAS con el nombre `my_temp_table`. Finalmente, `table.columnInfo` se usa para confirmar la carga y la estructura de la tabla.
¡Copiado!
/* Configurez votre hôte et port CAS */
*options cashost="cloud.example.com" casport=5570;
*cas casauto;
/* Crée un fichier CSV temporaire à partir de données inline */
filename mydata temp;
data _null_;
file mydata dsd;
put "Name,Age,City";
put "Alice,30,Paris";
put "Bob,24,Lyon";
put "Charlie,35,Marseille";
run;
/* Récupère le chemin d'accès au fichier temporaire */
%let temppath = %sysfunc(quote(%sysfunc(pathname(mydata))));
/* Charge le fichier CSV temporaire dans CAS */
proc cas;
upload path=&temppath.
casOut={
name='my_temp_table',
replace=True
},
importOptions={fileType="csv"};
run;
/* Vérifie que la table est chargée en affichant ses colonnes */
proc cas;
table.columnInfo / table='my_temp_table';
run;
quit;
/* Vérifie que la table est chargée en affichant ses colonnes */
29
PROC CAS;
30
TABLE.columnInfo / TABLE='my_temp_table';
31
RUN;
32
QUIT;
2 Bloque de código
PROC CAS / PROC HTTP Data
Explicación : Este ejemplo utiliza `PROC HTTP` para descargar un archivo CSV desde una URL remota a un archivo temporal. Este archivo se carga luego en CAS a través de `table.upload`. La opción `promote=True` en `casOut` hace que la tabla sea accesible globalmente en la sesión CAS. Para verificar la carga, `table.tableInfo` muestra los metadatos de la tabla, y `simple.summary` calcula estadísticas básicas, ilustrando acciones comunes de gestión y análisis de tablas CAS.
¡Copiado!
/* Configurez votre hôte et port CAS */
*options cashost="cloud.example.com" casport=5570;
*cas casauto;
/* URL d'un fichier CSV public */
%let data_url='http://support.sas.com/documentation/onlinedoc/viya/exampledatasets/classfit.csv';
filename temp_csv temp;
/* Simule le téléchargement d'un fichier CSV depuis une URL */
proc http method='get' url=&data_url. out=temp_csv;
run;
/* Récupère le chemin d'accès au fichier temporaire */
%let temppath = %sysfunc(quote(%sysfunc(pathname(temp_csv))));
/* Charge le fichier CSV temporaire dans CAS et le promeut en table globale */
proc cas;
upload path=&temppath.
casOut={
name='class_promote',
replace=True,
promote=True /* Propage la table pour la rendre globale */
},
importOptions={fileType="csv"};
run;
/* Vérifie les informations de la table (action courante) */
proc cas;
table.tableInfo / name='class_promote';
run;
/* Obtient des statistiques sommaires (autre action courante) */
proc cas;
t1.name = 'class_promote';
simple.summary /
table = t1,
subSet = {"N", "MEAN", "STD"};
quit;
/* Charge le fichier CSV temporaire dans CAS et le promeut en table globale */
17
PROC CAS;
18
upload path=&temppath.
19
casOut={
20
name='class_promote',
21
replace=True,
22
promote=True /* Propage la table pour la rendre globale */
23
},
24
importOptions={fileType="csv"};
25
RUN;
26
27
/* Vérifie les informations de la table (action courante) */
28
PROC CAS;
29
TABLE.tableInfo / name='class_promote';
30
RUN;
31
32
/* Obtient des statistiques sommaires (autre action courante) */
33
PROC CAS;
34
t1.name = 'class_promote';
35
SIMPLE.summary /
36
TABLE = t1,
37
subSet = {"N", "MEAN", "STD"};
38
QUIT;
3 Bloque de código
PROC CAS / DATA step Data
Explicación : Este ejemplo demuestra capacidades avanzadas al cargar un archivo CSV y luego usar un `DATA step` integrado en `PROC CAS` para manipular los datos. Calcula una nueva variable, el Índice de Masa Corporal (IMC), y filtra el conjunto de datos para incluir solo los registros masculinos. Finalmente, la acción `simple.summary` se aplica a la tabla resultante para obtener estadísticas sobre las columnas manipuladas, mostrando una transformación y un análisis en memoria de CAS.
¡Copiado!
/* Configurez votre hôte et port CAS */
*options cashost="cloud.example.com" casport=5570;
*cas casauto;
/* Crée un fichier CSV temporaire avec des données de santé */
filename health_data temp;
data _null_;
file health_data dsd;
put "ID,Gender,Height_cm,Weight_kg";
put "1,M,175,70";
put "2,F,160,55";
put "3,M,180,85";
put "4,F,165,60";
put "5,M,170,75";
run;
/* Récupère le chemin d'accès au fichier temporaire */
%let temppath = %sysfunc(quote(%sysfunc(pathname(health_data))));
/* Charge le fichier CSV temporaire dans CAS */
proc cas;
upload path=&temppath.
casOut={
name='health_metrics',
replace=True
},
importOptions={fileType="csv"};
run;
/* Manipule les données dans CAS : Calcule l'IMC et filtre par genre */
proc cas;
data casuser.health_bmi / caslib='casuser' replace=True;
set casuser.health_metrics;
BMI = Weight_kg / ((Height_cm / 100) ** 2);
where Gender = 'M'; /* Filtre pour ne conserver que les hommes */
run;
/* Obtient des statistiques sommaires pour la nouvelle table avec l'IMC */
simple.summary /
table='health_bmi',
inputs={'Height_cm', 'Weight_kg', 'BMI'},
subSet = {"MEAN", "MAX", "MIN"};
run;
quit;
/* Manipule les données dans CAS : Calcule l'IMC et filtre par genre */
31
PROC CAS;
32
DATA casuser.health_bmi / caslib='casuser' replace=True;
33
SET casuser.health_metrics;
34
BMI = Weight_kg / ((Height_cm / 100) ** 2);
35
where Gender = 'M'; /* Filtre pour ne conserver que les hommes */
36
RUN;
37
38
/* Obtient des statistiques sommaires pour la nouvelle table avec l'IMC */
39
SIMPLE.summary /
40
TABLE='health_bmi',
41
inputs={'Height_cm', 'Weight_kg', 'BMI'},
42
subSet = {"MEAN", "MAX", "MIN"};
43
RUN;
44
QUIT;
4 Bloque de código
PROC CAS / DATA step Data
Explicación : Este ejemplo en dos partes ilustra primero la robustez del sistema frente a los errores: se realiza un intento de cargar un archivo inexistente, lo que generará un error en el registro de SAS, destacando la necesidad de una gestión de errores. La segunda parte demuestra la capacidad de CAS para manejar grandes volúmenes de datos. Un gran conjunto de datos ficticio se genera directamente en memoria de CAS a través de un `DATA step` (`10 000 observaciones`), y luego se calculan estadísticas resumidas agrupadas. Esto resalta el rendimiento de CAS para el procesamiento distribuido de grandes volúmenes de datos.
¡Copiado!
/* Configurez votre hôte et port CAS */
*options cashost="cloud.example.com" casport=5570;
*cas casauto;
/* --- Partie 1: Démonstration de la gestion d'erreur avec un fichier inexistant --- */
/* Tente de charger un fichier qui n'existe pas pour montrer une erreur */
/* Cette opération devrait générer une erreur visible dans le log SAS */
filename nonexist temp;
proc cas;
upload path=%sysfunc(quote(%sysfunc(pathname(nonexist))))
casOut={
name='error_test',
replace=True
},
importOptions={fileType="csv"};
run; /* Vérifier le log SAS pour les messages d'erreur de fichier introuvable */
/* --- Partie 2: Simulation de chargement et traitement de gros volumes de données --- */
/* Création d'une table CAS de grande taille (simulée) */
proc cas;
data casuser.large_data (drop=_i_) / caslib='casuser' replace=True;
do _i_ = 1 to 10000; /* 10 000 observations simulées */
ID = _i_;
Category = ceil(rand('UNIFORM') * 5); /* 5 catégories aléatoires */
Value = rand('NORMAL') * 100 + 50;
output;
end;
run;
/* Calcul de statistiques sommaires sur la grande table, groupées par catégorie */
simple.summary /
table='large_data',
inputs={'Value'},
groupBy={'Category'},
subSet = {"N", "MEAN", "STD"};
run;
quit;
/* Calcul de statistiques sommaires sur la grande table, groupées par catégorie */
31
SIMPLE.summary /
32
TABLE='large_data',
33
inputs={'Value'},
34
groupBy={'Category'},
35
subSet = {"N", "MEAN", "STD"};
36
RUN;
37
QUIT;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.