Veröffentlicht am :
ETL FICHIER_EXTERNE_SIMULE_OU_CREATION_INTERNE

Laden einer CSV-Datei von einem Server

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die `upload`-Aktion ermöglicht die Übertragung von Daten von einer Client-Datei oder einer temporären Datei auf Client-Seite in eine CAS-In-Memory-Tabelle. In diesem Beispiel wird `PROC HTTP` zuerst verwendet, um eine CSV-Datei von einer entfernten URL abzurufen und temporär zu speichern. Anschließend wird die `upload`-Aktion über `PROC CAS` aufgerufen, um diese temporäre Datei zu lesen und als CAS-Tabelle zu senden. Optionen wie `casOut` ermöglichen die Angabe des Zieltabellennamens in CAS und die Verwaltung des Ersetzens (`replace=True`). Die Option `importOptions={fileType="csv"}` stellt sicher, dass die Datei korrekt als CSV interpretiert wird. Nach dem Laden der Tabelle wird eine `simple.summary`-Aktion ausgeführt, um deskriptive Statistiken, gruppiert nach einer Variablen, bereitzustellen und somit die Datenverarbeitung in der CAS-Umgebung zu demonstrieren.
Datenanalyse

Type : FICHIER_EXTERNE_SIMULE_OU_CREATION_INTERNE


Die Beispiele erstellen interne CSV-Daten oder simulieren externe Dateien, um ihre Autonomie zu gewährleisten.

1 Codeblock
PROC CAS / DATA step Data
Erklärung :
Dieses Beispiel zeigt das direkte Laden einer kleinen, on-the-fly erstellten CSV-Datei über einen `DATA step` in SAS, die dann an CAS übertragen wird. Die `filename`-Anweisung mit `temp` erstellt eine temporäre Datei, deren Pfad von `%sysfunc(pathname(mydata))` abgerufen wird. Die Aktion `table.upload` wird dann verwendet, um diese Datei unter dem Namen `my_temp_table` in die CAS-Sitzung zu laden. Schließlich wird `table.columnInfo` verwendet, um das Laden und die Struktur der Tabelle zu bestätigen.
Kopiert!
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 Codeblock
PROC CAS / PROC HTTP Data
Erklärung :
Dieses Beispiel verwendet `PROC HTTP`, um eine CSV-Datei von einer entfernten URL in eine temporäre Datei herunterzuladen. Diese Datei wird dann über `table.upload` in CAS geladen. Die Option `promote=True` in `casOut` macht die Tabelle in der CAS-Sitzung global zugänglich. Zur Überprüfung des Ladevorgangs zeigt `table.tableInfo` die Metadaten der Tabelle an, und `simple.summary` berechnet grundlegende Statistiken, was gängige Aktionen für die Verwaltung und Analyse von CAS-Tabellen veranschaulicht.
Kopiert!
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 Codeblock
PROC CAS / DATA step Data
Erklärung :
Dieses Beispiel demonstriert erweiterte Funktionen, indem es eine CSV-Datei lädt und dann einen in `PROC CAS` integrierten `DATA step` verwendet, um die Daten zu bearbeiten. Es berechnet eine neue Variable, den Body Mass Index (BMI), und filtert den Datensatz, um nur männliche Datensätze einzuschließen. Schließlich wird die Aktion `simple.summary` auf die resultierende Tabelle angewendet, um Statistiken über die manipulierten Spalten zu erhalten, was eine Transformation und Analyse im CAS-Speicher zeigt.
Kopiert!
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 Codeblock
PROC CAS / DATA step Data
Erklärung :
Dieses zweiteilige Beispiel veranschaulicht zunächst die Robustheit des Systems gegenüber Fehlern: Es wird versucht, eine nicht existierende Datei zu laden, was einen Fehler im SAS-Log erzeugt und die Notwendigkeit einer Fehlerbehandlung unterstreicht. Der zweite Teil demonstriert die Fähigkeit von CAS, große Datenmengen zu verwalten. Ein großer Dummy-Datensatz wird direkt im CAS-Speicher über einen `DATA step` (10.000 Beobachtungen) generiert, und anschließend werden gruppierte Zusammenfassungsstatistiken berechnet. Dies verdeutlicht die Leistung von CAS bei der verteilten Verarbeitung großer Datenmengen.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.