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!
/* 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 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!
/* 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 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!
/* 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 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!
/* 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;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.