Die Beispiele verwenden das SASHELP.CARS-Dataset, das mit PROC CASUTIL in den CAS-Speicher geladen wird, um die Autonomie der Beispiele zu gewährleisten.
1 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel veranschaulicht die einfachste Verwendung eines DATA-Schritts in CAS. Es lädt das SASHELP.CARS-Dataset in den CAS-Speicher und erstellt dann eine neue CAS-Tabelle namens 'cars_with_eff'. Eine neue Variable 'Efficiency_Category' wird basierend auf dem Stadtverbrauch (MPG_City) hinzugefügt. Die Verwendung der Librefs 'mycas' für Eingabe und Ausgabe gewährleistet die Ausführung des DATA-Schritts in CAS. Eine PROC PRINT wird verwendet, um die ersten Beobachtungen der neuen Tabelle anzuzeigen, und die temporäre Tabelle wird am Ende gelöscht.
Kopiert!
libname mycas cas; /* Crée un libref CAS */
proc casutil outcaslib="casuser" replace;
load data=sashelp.cars casout="cars_cas";
run;
data mycas.cars_with_eff;
set mycas.cars_cas;
if MPG_City > 25 then Efficiency_Category = 'Haute';
else Efficiency_Category = 'Standard';
run;
proc print data=mycas.cars_with_eff(obs=5);
title 'Exemple Basique: Voitures avec catégorie d''efficacité';
run;
proc casutil outcaslib="casuser" drop table="cars_with_eff";
run;
1
LIBNAME mycas cas; /* Crée un libref CAS */
2
3
PROC CASUTIL outcaslib="casuser" replace;
4
load DATA=sashelp.cars casout="cars_cas";
5
RUN;
6
7
DATA mycas.cars_with_eff;
8
SET mycas.cars_cas;
9
IF MPG_City > 25THEN Efficiency_Category = 'Haute';
10
ELSE Efficiency_Category = 'Standard';
11
RUN;
12
13
PROC PRINTDATA=mycas.cars_with_eff(obs=5);
14
title 'Exemple Basique: Voitures avec catégorie d''efficacité';
15
RUN;
16
17
PROC CASUTIL outcaslib="casuser" drop TABLE="cars_with_eff";
18
RUN;
19
2 Codeblock
DATA STEP Data
Erklärung : Dieses Zwischenbeispiel zeigt, wie Daten gefiltert und spezifische Variablen bei der Ausführung eines DATA-Schritts in CAS ausgewählt werden. Es werden nur Sportwagen des Typs 'Sports' ausgewählt, deren Autobahnverbrauch (MPG_Highway) über 20 liegt, unter Verwendung einer WHERE-Klausel. Die Option 'KEEP=' wird verwendet, um nur die Variablen 'Make', 'Model', 'Type', 'Origin' und 'MSRP' in der Ausgabetabelle 'sporty_cars' beizubehalten. Dies optimiert die finale Tabelle, indem nur die relevanten Informationen gespeichert werden.
Kopiert!
libname mycas cas;
proc casutil outcaslib="casuser" replace;
load data=sashelp.cars casout="cars_cas";
run;
data mycas.sporty_cars(keep=Make Model Type Origin MSRP);
set mycas.cars_cas;
where Type = 'Sports' and MPG_Highway > 20;
run;
proc print data=mycas.sporty_cars(obs=5);
title 'Exemple Intermédiaire: Voitures de sport économes en carburant';
run;
proc casutil outcaslib="casuser" drop table="sporty_cars";
run;
1
LIBNAME mycas cas;
2
3
PROC CASUTIL outcaslib="casuser" replace;
4
load DATA=sashelp.cars casout="cars_cas";
5
RUN;
6
7
DATA mycas.sporty_cars(keep=Make Model Type Origin MSRP);
8
SET mycas.cars_cas;
9
where Type = 'Sports' and MPG_Highway > 20;
10
RUN;
11
12
PROC PRINTDATA=mycas.sporty_cars(obs=5);
13
title 'Exemple Intermédiaire: Voitures de sport économes en carburant';
14
RUN;
15
16
PROC CASUTIL outcaslib="casuser" drop TABLE="sporty_cars";
17
RUN;
18
3 Codeblock
DATA STEP Data
Erklärung : Dieses erweiterte Beispiel demonstriert die Verwendung von automatischen Variablen, die spezifisch für die verteilte Ausführung in CAS sind, wie '_N_', '_THREADID_' und '_HOSTNAME_'. Es erstellt eine neue Variable 'Row_ID' basierend auf '_N_' und eine Variable 'Thread_Info', um Details des Threads und des CAS-Arbeitsknotens zu erfassen, der die Beobachtung verarbeitet. Zusätzlich wird CALL SYMPUTX verwendet, um Makrovariablen für spezifische Beobachtungen zu erstellen, was für Audits oder die Verfolgung der verteilten Verarbeitung nützlich sein kann. Ein Makro ist enthalten, um die Erstellung dieser Makrovariablen zu überprüfen.
Kopiert!
libname mycas cas;
proc casutil outcaslib="casuser" replace;
load data=sashelp.cars casout="cars_cas";
run;
data mycas.cars_processed;
set mycas.cars_cas;
Row_ID = _N_;
Thread_Info = cats('Thread: ', _THREADID_, ' on node: ', _HOSTNAME_);
if (_N_ between 1 and 10) or (mod(_N_, 100) = 0) then call symputx(cats('Obs',_N_), Make);
run;
%macro check_macros;
%global Obs1 Obs10 Obs100;
%if %symexist(Obs1) %then %put Observation 1 (Make): &Obs1.;
%if %symexist(Obs10) %then %put Observation 10 (Make): &Obs10.;
%if %symexist(Obs100) %then %put Observation 100 (Make): &Obs100.;
%mend;
%check_macros;
proc print data=mycas.cars_processed(obs=10);
title 'Exemple Avancé: Traitement et informations de thread';
run;
proc casutil outcaslib="casuser" drop table="cars_processed";
run;
1
LIBNAME mycas cas;
2
3
PROC CASUTIL outcaslib="casuser" replace;
4
load DATA=sashelp.cars casout="cars_cas";
5
RUN;
6
7
DATA mycas.cars_processed;
8
SET mycas.cars_cas;
9
Row_ID = _N_;
10
Thread_Info = cats('Thread: ', _THREADID_, ' on node: ', _HOSTNAME_);
11
IF (_N_ between 1 and 10) or (mod(_N_, 100) = 0) THEN call symputx(cats('Obs',_N_), Make);
title 'Exemple Avancé: Traitement et informations de thread';
24
RUN;
25
26
PROC CASUTIL outcaslib="casuser" drop TABLE="cars_processed";
27
RUN;
28
4 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel konzentriert sich auf die Datenverwaltung und das bedingte Schreiben in einem DATA-Schritt in CAS, eine gängige Praxis in der Viya-Umgebung zur Qualitätssicherung von Daten. Es beginnt mit der Erstellung einer lokalen Datentabelle mit einigen simulierten fehlenden Werten, die dann in CAS geladen wird. Der DATA-Schritt liest diese Tabelle und schreibt die Beobachtungen in zwei separate CAS-Ausgabetabellen: 'cars_clean' für vollständige Daten und 'cars_problematic' für Beobachtungen, die fehlende Werte in den Kraftstoffverbrauchspalten enthalten. Eine berechnete Variable 'Avg_MPG' wird für die sauberen Daten erstellt. Die Verwendung des Schlüsselworts '_ERROR_' ermöglicht auch die Signalisierung von Fehlerbedingungen im Log, was für das Debugging in einer verteilten Umgebung nützlich ist. Dies ist ein typischer Anwendungsfall für die Datenvorbereitung vor einer weiteren Analyse in CAS.
Kopiert!
libname mycas cas;
/* Création d'une table d'entrée avec quelques données manquantes */
data cars_data_local;
input Make $ Model $ Type $ MPG_City MPG_Highway;
datalines;
Toyota Camry Sedan 28 39
Honda Civic Sedan 30 40
Ford F-150 Truck . 22
Chevrolet Silverado Truck 16 .
BMW X5 SUV 20 27
;;
run;
proc casutil outcaslib="casuser" replace;
load data=cars_data_local casout="cars_with_missing";
run;
data mycas.cars_clean mycas.cars_problematic;
set mycas.cars_with_missing;
/* Vérifier les valeurs manquantes pour la consommation de carburant */
if missing(MPG_City) or missing(MPG_Highway) then do;
output mycas.cars_problematic; /* Écrire les lignes avec problèmes dans une table séparée */
_ERROR_ = 1; /* Marquer l'observation comme ayant une erreur pour le log */
end;
else do;
Avg_MPG = (MPG_City + MPG_Highway) / 2;
output mycas.cars_clean;
end;
run;
proc print data=mycas.cars_clean(obs=5);
title 'Exemple Viya: Voitures sans données manquantes';
run;
proc print data=mycas.cars_problematic(obs=5);
title 'Exemple Viya: Voitures avec données manquantes';
run;
proc casutil outcaslib="casuser" drop table="cars_with_missing" casout="cars_clean" casout="cars_problematic";
run;
1
LIBNAME mycas cas;
2
3
/* Création d'une table d'entrée avec quelques données manquantes */
/* Vérifier les valeurs manquantes pour la consommation de carburant */
22
IF missing(MPG_City) or missing(MPG_Highway) THENDO;
23
OUTPUT mycas.cars_problematic; /* Écrire les lignes avec problèmes dans une table séparée */
24
_ERROR_ = 1; /* Marquer l'observation comme ayant une erreur pour le log */
25
END;
26
ELSEDO;
27
Avg_MPG = (MPG_City + MPG_Highway) / 2;
28
OUTPUT mycas.cars_clean;
29
END;
30
RUN;
31
32
PROC PRINTDATA=mycas.cars_clean(obs=5);
33
title 'Exemple Viya: Voitures sans données manquantes';
34
RUN;
35
36
PROC PRINTDATA=mycas.cars_problematic(obs=5);
37
title 'Exemple Viya: Voitures avec données manquantes';
38
RUN;
39
40
PROC CASUTIL outcaslib="casuser" drop TABLE="cars_with_missing" casout="cars_clean" casout="cars_problematic";
41
RUN;
42
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.