CAS CAS

Eine In-Memory-CAS-Tabelle markieren

Dieser Code ist auch verfügbar auf: Español
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Wenn Sie den DATA-Schritt im CAS-Server ausführen, läuft dieser auf mehreren Threads auf In-Memory-Daten ab, was eine schnellere Verarbeitung ermöglicht. Um den DATA-Schritt in einem CAS-Server auszuführen, müssen Sie ein CAS-Engine-Libref für die Eingabe- und Ausgabedatensätze angeben. Außerdem müssen Sie sicherstellen, dass alle Sprachlemente des DATA-Schritts für den CAS-Server gültig sind. Weitere Informationen zur Unterstützung von Sprachlementen finden Sie in den Abschnitten 'Unterstützung und Einschränkungen von Sprachlementen' und 'Einschränkungen für die Verarbeitung des DATA-Schritts in CAS'.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP, um ihre Autonomie und Reproduzierbarkeit zu gewährleisten.

1 Codeblock
DATA STEP Data
Erklärung :
Dieses grundlegende Beispiel zeigt, wie das SASHELP.BASEBALL-Dataset in CAS geladen und eine einfache Scoring-Logik angewendet wird. Die Variable 'score' wird auf 1 gesetzt, wenn 'nHits' größer als 150 ist, andernfalls auf 0. Temporäre CAS-Tabellen werden nach Gebrauch bereinigt.
Kopiert!
1LIBNAME mycas cas;
2 
3PROC CASUTIL;
4 load DATA=sashelp.baseball promote;
5RUN;
6 
7DATA mycas.baseball_scored_basic;
8 SET mycas.baseball;
9 IF nHits > 150 THEN score = 1;
10 ELSE score = 0;
11RUN;
12 
13/* Afficher un échantillon des données scorées */
14PROC PRINT DATA=mycas.baseball_scored_basic (obs=10);
15RUN;
16 
17/* Nettoyer la table CAS */
18PROC CAS;
19 TABLE.dropTable / caslib="CASUSER" name="baseball_scored_basic" quiet;
20 TABLE.dropTable / caslib="CASUSER" name="baseball" quiet;
21QUIT;
2 Codeblock
DATA STEP Data
Erklärung :
Dieses Zwischenbeispiel erstellt Scheindaten und lädt sie in CAS. Es berechnet einen Batting Average (Avg) und wendet eine Punktzahl ('PlayerScore') basierend auf mehreren Bedingungen (`IF-THEN-ELSE`) an. Die Option `DROP` wird verwendet, um bestimmte Variablen aus der resultierenden Tabelle auszuschließen, was die Variablenmanipulation im Scoring-Kontext demonstriert.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Charger des données de démonstration dans CAS */
4DATA casuser.demo_players;
5 INPUT PlayerName $ AtBats Hits Runs RBIs;
6 DATALINES;
7John 200 60 30 25
8Mike 350 120 70 60
9Sarah 150 40 20 15
10Chris 400 130 80 65
11Emily 100 25 10 8
12;
13RUN;
14 
15PROC CASUTIL;
16 promote casdata="demo_players" caslib="CASUSER";
17RUN;
18 
19DATA mycas.players_scored_intermediate;
20 SET casuser.demo_players;
21 /* Ajouter une variable de moyenne de frappe */
22 Avg = Hits / AtBats;
23 
24 /* Appliquer des scores basés sur plusieurs critères */
25 IF Avg >= 0.300 and Hits > 100 THEN PlayerScore = 3;
26 ELSE IF Avg >= 0.250 and Hits > 50 THEN PlayerScore = 2;
27 ELSE PlayerScore = 1;
28 
29 /* Masquer certaines variables de la sortie finale si non nécessaire */
30 drop AtBats Hits Runs RBIs;
31RUN;
32 
33/* Afficher un échantillon des données scorées avec les nouvelles variables */
34PROC PRINT DATA=mycas.players_scored_intermediate (obs=10);
35RUN;
36 
37/* Nettoyer les tables CAS */
38PROC CAS;
39 TABLE.dropTable / caslib="CASUSER" name="players_scored_intermediate" quiet;
40 TABLE.dropTable / caslib="CASUSER" name="demo_players" quiet;
41QUIT;
3 Codeblock
DATA STEP Data
Erklärung :
Dieses fortgeschrittene Beispiel zeigt, wie Daten aus mehreren CAS-Tabellen ('player_stats' und 'player_salary') mithilfe der `MERGE`-Anweisung kombiniert werden. Es verwendet Makrovariablen (`%LET`), um die Scoring-Schwellenwerte zu parametrisieren, was eine größere Flexibilität ermöglicht. Ein benutzerdefiniertes Format (`ScoreFmt.`) wird auf die Variable 'OverallScore' angewendet, um die Lesbarkeit der Ergebnisse zu verbessern.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Création des données de performance des joueurs (en CAS) */
4DATA casuser.player_stats;
5 INPUT PlayerID AtBats Hits;
6 DATALINES;
71 200 60
82 350 120
93 150 40
104 400 130
115 100 25
12;
13RUN;
14 
15/* Création des données de salaire des joueurs (en CAS) */
16DATA casuser.player_salary;
17 INPUT PlayerID Salary;
18 DATALINES;
191 50000
202 150000
213 30000
224 200000
235 20000
24;
25RUN;
26 
27PROC CASUTIL;
28 promote casdata="player_stats" caslib="CASUSER";
29 promote casdata="player_salary" caslib="CASUSER";
30RUN;
31 
32/* Définition de macro-variables pour les seuils de scoring */
33%let hits_threshold = 100;
34%let salary_threshold = 100000;
35 
36DATA mycas.player_combined_scored;
37 MERGE casuser.player_stats (in=s)
38 casuser.player_salary (in=l);
39 BY PlayerID;
40 IF s and l; /* S'assurer que les enregistrements existent dans les deux tables */
41 
42 BattingAverage = Hits / AtBats;
43 
44 /* Logique de scoring avancée */
45 IF Hits > &hits_threshold and Salary > &salary_threshold THEN OverallScore = 3;
46 ELSE IF Hits > (&hits_threshold / 2) or Salary > (&salary_threshold / 2) THEN OverallScore = 2;
47 ELSE OverallScore = 1;
48 
49 /* Exemple d'utilisation d'un format pour la variable Score */
50 FORMAT OverallScore ScoreFmt.;
51RUN;
52 
53/* Définition du format personnalisé */
54PROC FORMAT;
55 value ScoreFmt
56 1 = 'Faible'
57 2 = 'Moyen'
58 3 = 'Élevé';
59RUN;
60 
61/* Afficher les résultats */
62PROC PRINT DATA=mycas.player_combined_scored (obs=10);
63RUN;
64 
65/* Nettoyer les tables CAS */
66PROC CAS;
67 TABLE.dropTable / caslib="CASUSER" name="player_combined_scored" quiet;
68 TABLE.dropTable / caslib="CASUSER" name="player_stats" quiet;
69 TABLE.dropTable / caslib="CASUSER" name="player_salary" quiet;
70QUIT;
4 Codeblock
DATA STEP / PROC CASUTIL Data
Erklärung :
Dieses Beispiel konzentriert sich auf die Robustheit der CAS-Integration. Es erstellt temporäre Daten und lädt sie in CAS, einschließlich einer grundlegenden Fehlerbehandlung (`if _ERROR_`). Nach dem Scoring wird die Tabelle persistent gemacht, indem sie im 'sashdat'-Format mit der Aktion `table.save` gespeichert wird. Die Existenz der 'sashdat'-Datei wird überprüft, um die Datenpersistenz über die aktuelle CAS-Sitzung hinaus zu bestätigen.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Création d'une table de données temporaire pour le chargement */
4DATA _temp_data_for_cas;
5 INPUT ID Value;
6 DATALINES;
71 10
82 25
93 5
104 40
115 15
12;
13RUN;
14 
15/* Tenter de charger la table dans CAS avec gestion d'erreur */
16PROC CASUTIL;
17 /* Supprimer la table si elle existe déjà pour éviter des erreurs */
18 droptable casdata="my_scored_table" caslib="CASUSER" quiet;
19 droptable casdata="input_data" caslib="CASUSER" quiet;
20 
21 /* Charger et promouvoir la table */
22 load DATA=_temp_data_for_cas casout="input_data" caslib="CASUSER" promote;
23 IF _ERROR_ THEN put "ERREUR: Échec du chargement de la table 'input_data'.";
24RUN;
25 
26/* Scoring de la table chargée */
27DATA mycas.my_scored_table;
28 SET casuser.input_data;
29 IF Value > 20 THEN ScoreCategory = 'Haut';
30 ELSE IF Value > 10 THEN ScoreCategory = 'Moyen';
31 ELSE ScoreCategory = 'Bas';
32RUN;
33 
34/* Rendre la table CAS persistante pour les sessions futures */
35PROC CAS;
36 TABLE.save /
37 caslib="CASUSER"
38 name="my_scored_table"
39 path="my_scored_table.sashdat"
40 replace=TRUE;
41QUIT;
42 
43/* Vérifier la persistance en listant les fichiers sashdat */
44PROC CASUTIL;
45 list files caslib="CASUSER" path="my_scored_table.sashdat";
46RUN;
47 
48/* Afficher les résultats */
49PROC PRINT DATA=mycas.my_scored_table (obs=10);
50RUN;
51 
52/* Nettoyer la table CAS en mémoire (la version sashdat reste) */
53PROC CAS;
54 TABLE.dropTable / caslib="CASUSER" name="my_scored_table" quiet;
55 TABLE.dropTable / caslib="CASUSER" name="input_data" quiet;
56QUIT;
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.


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.