Publicado el :
ETL FICHIER_EXTERNE_SIMULE_OU_CREATION_INTERNE

Carga de un archivo CSV desde un servidor

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
1/* Configurez votre hôte et port CAS */
2*options cashost="cloud.example.com" casport=5570;
3*cas casauto;
4 
5/* Crée un fichier CSV temporaire à partir de données inline */
6filename mydata temp;
7DATA _null_;
8 file mydata dsd;
9 put "Name,Age,City";
10 put "Alice,30,Paris";
11 put "Bob,24,Lyon";
12 put "Charlie,35,Marseille";
13RUN;
14 
15/* Récupère le chemin d'accès au fichier temporaire */
16%let temppath = %sysfunc(quote(%sysfunc(pathname(mydata))));
17 
18/* Charge le fichier CSV temporaire dans CAS */
19PROC CAS;
20 upload path=&temppath.
21 casOut={
22 name='my_temp_table',
23 replace=True
24 },
25 importOptions={fileType="csv"};
26RUN;
27 
28/* Vérifie que la table est chargée en affichant ses colonnes */
29PROC CAS;
30 TABLE.columnInfo / TABLE='my_temp_table';
31RUN;
32QUIT;
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!
1/* Configurez votre hôte et port CAS */
2*options cashost="cloud.example.com" casport=5570;
3*cas casauto;
4 
5/* URL d'un fichier CSV public */
6%let data_url='http://support.sas.com/documentation/onlinedoc/viya/exampledatasets/classfit.csv';
7filename temp_csv temp;
8 
9/* Simule le téléchargement d'un fichier CSV depuis une URL */
10PROC HTTP method='get' url=&data_url. out=temp_csv;
11RUN;
12 
13/* Récupère le chemin d'accès au fichier temporaire */
14%let temppath = %sysfunc(quote(%sysfunc(pathname(temp_csv))));
15 
16/* Charge le fichier CSV temporaire dans CAS et le promeut en table globale */
17PROC 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"};
25RUN;
26 
27/* Vérifie les informations de la table (action courante) */
28PROC CAS;
29 TABLE.tableInfo / name='class_promote';
30RUN;
31 
32/* Obtient des statistiques sommaires (autre action courante) */
33PROC CAS;
34 t1.name = 'class_promote';
35 SIMPLE.summary /
36 TABLE = t1,
37 subSet = {"N", "MEAN", "STD"};
38QUIT;
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!
1/* Configurez votre hôte et port CAS */
2*options cashost="cloud.example.com" casport=5570;
3*cas casauto;
4 
5/* Crée un fichier CSV temporaire avec des données de santé */
6filename health_data temp;
7DATA _null_;
8 file health_data dsd;
9 put "ID,Gender,Height_cm,Weight_kg";
10 put "1,M,175,70";
11 put "2,F,160,55";
12 put "3,M,180,85";
13 put "4,F,165,60";
14 put "5,M,170,75";
15RUN;
16 
17/* Récupère le chemin d'accès au fichier temporaire */
18%let temppath = %sysfunc(quote(%sysfunc(pathname(health_data))));
19 
20/* Charge le fichier CSV temporaire dans CAS */
21PROC CAS;
22 upload path=&temppath.
23 casOut={
24 name='health_metrics',
25 replace=True
26 },
27 importOptions={fileType="csv"};
28RUN;
29 
30/* Manipule les données dans CAS : Calcule l'IMC et filtre par genre */
31PROC 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"};
43RUN;
44QUIT;
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!
1/* Configurez votre hôte et port CAS */
2*options cashost="cloud.example.com" casport=5570;
3*cas casauto;
4 
5/* --- Partie 1: Démonstration de la gestion d'erreur avec un fichier inexistant --- */
6/* Tente de charger un fichier qui n'existe pas pour montrer une erreur */
7/* Cette opération devrait générer une erreur visible dans le log SAS */
8filename nonexist temp;
9PROC CAS;
10 upload path=%sysfunc(quote(%sysfunc(pathname(nonexist))))
11 casOut={
12 name='error_test',
13 replace=True
14 },
15 importOptions={fileType="csv"};
16RUN; /* Vérifier le log SAS pour les messages d'erreur de fichier introuvable */
17 
18/* --- Partie 2: Simulation de chargement et traitement de gros volumes de données --- */
19/* Création d'une table CAS de grande taille (simulée) */
20PROC CAS;
21 DATA casuser.large_data (drop=_i_) / caslib='casuser' replace=True;
22 DO _i_ = 1 to 10000; /* 10 000 observations simulées */
23 ID = _i_;
24 Category = ceil(rand('UNIFORM') * 5); /* 5 catégories aléatoires */
25 Value = rand('NORMAL') * 100 + 50;
26 OUTPUT;
27 END;
28 RUN;
29 
30 /* 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"};
36RUN;
37QUIT;
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.