Veröffentlicht am :
ETL SASHELP_CARS

Ausführen eines DATA-Schritts in CAS auf einer CAS-Tabelle

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die Ausführung eines DATA-Schritts in CAS bedeutet, dass der SAS©-Code direkt vom CAS-Server verarbeitet wird, was die Vorteile der verteilten In-Memory-Verarbeitung für eine erhöhte Leistung bei großen Datenmengen nutzt. Damit ein DATA-Schritt in CAS ausgeführt werden kann, müssen die Eingabe- und Ausgabedaten CAS-Tabellen sein, die über ein CAS-Engine-Libref (z.B. 'mycas') zugänglich sind. Es ist entscheidend, dass die Ausgabetabelle mindestens eine Variable enthält, da Tabellen mit null Spalten in CAS nicht unterstützt werden. Die PROC CASUTIL wird empfohlen, um vorhandene SAS©-Datasets in CAS-Tabellen zu laden. Das System erkennt automatisch, dass ein DATA-Schritt in CAS ausgeführt werden muss, sobald ein CAS-Libref für die Eingabe- und/oder Ausgabedaten verwendet wird. Bestimmte Einschränkungen gelten für die unterstützten Sprachelemente in einem in CAS ausgeführten DATA-Schritt.
Datenanalyse

Type : SASHELP_CARS


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!
1LIBNAME mycas cas; /* Crée un libref CAS */
2 
3PROC CASUTIL outcaslib="casuser" replace;
4 load DATA=sashelp.cars casout="cars_cas";
5RUN;
6 
7DATA mycas.cars_with_eff;
8 SET mycas.cars_cas;
9 IF MPG_City > 25 THEN Efficiency_Category = 'Haute';
10 ELSE Efficiency_Category = 'Standard';
11 RUN;
12 
13PROC PRINT DATA=mycas.cars_with_eff(obs=5);
14 title 'Exemple Basique: Voitures avec catégorie d''efficacité';
15RUN;
16 
17PROC CASUTIL outcaslib="casuser" drop TABLE="cars_with_eff";
18RUN;
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!
1LIBNAME mycas cas;
2 
3PROC CASUTIL outcaslib="casuser" replace;
4 load DATA=sashelp.cars casout="cars_cas";
5RUN;
6 
7DATA 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 
12PROC PRINT DATA=mycas.sporty_cars(obs=5);
13 title 'Exemple Intermédiaire: Voitures de sport économes en carburant';
14RUN;
15 
16PROC CASUTIL outcaslib="casuser" drop TABLE="sporty_cars";
17RUN;
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!
1LIBNAME mycas cas;
2 
3PROC CASUTIL outcaslib="casuser" replace;
4 load DATA=sashelp.cars casout="cars_cas";
5RUN;
6 
7DATA 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);
12 RUN;
13 
14%macro check_macros;
15 %global Obs1 Obs10 Obs100;
16 %IF %symexist(Obs1) %THEN %put Observation 1 (Make): &Obs1.;
17 %IF %symexist(Obs10) %THEN %put Observation 10 (Make): &Obs10.;
18 %IF %symexist(Obs100) %THEN %put Observation 100 (Make): &Obs100.;
19%mend;
20%check_macros;
21 
22PROC PRINT DATA=mycas.cars_processed(obs=10);
23 title 'Exemple Avancé: Traitement et informations de thread';
24RUN;
25 
26PROC CASUTIL outcaslib="casuser" drop TABLE="cars_processed";
27RUN;
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!
1LIBNAME mycas cas;
2 
3/* Création d'une table d'entrée avec quelques données manquantes */
4DATA cars_data_local;
5 INPUT Make $ Model $ Type $ MPG_City MPG_Highway;
6 DATALINES;
7Toyota Camry Sedan 28 39
8Honda Civic Sedan 30 40
9Ford F-150 Truck . 22
10Chevrolet Silverado Truck 16 .
11BMW X5 SUV 20 27
12;;
13RUN;
14 
15PROC CASUTIL outcaslib="casuser" replace;
16 load DATA=cars_data_local casout="cars_with_missing";
17RUN;
18 
19DATA mycas.cars_clean mycas.cars_problematic;
20 SET mycas.cars_with_missing;
21 /* Vérifier les valeurs manquantes pour la consommation de carburant */
22 IF missing(MPG_City) or missing(MPG_Highway) THEN DO;
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 ELSE DO;
27 Avg_MPG = (MPG_City + MPG_Highway) / 2;
28 OUTPUT mycas.cars_clean;
29 END;
30 RUN;
31 
32PROC PRINT DATA=mycas.cars_clean(obs=5);
33 title 'Exemple Viya: Voitures sans données manquantes';
34RUN;
35 
36PROC PRINT DATA=mycas.cars_problematic(obs=5);
37 title 'Exemple Viya: Voitures avec données manquantes';
38RUN;
39 
40PROC CASUTIL outcaslib="casuser" drop TABLE="cars_with_missing" casout="cars_clean" casout="cars_problematic";
41RUN;
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved.