Veröffentlicht am :
ETL CREATION_INTERNE

Laden eines SAS-Datensatzes in CAS als verteilte Tabelle

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Laden eines SAS©-Datensatzes nach CAS ist ein grundlegender Schritt, um die Vorteile der verteilten In-Memory-Rechenleistung von SAS© Viya zu nutzen. Das Hauptwerkzeug für diese Aufgabe ist die PROC CASUTIL-Prozedur, die über ihre LOAD-Anweisung ein effizientes Kopieren von Daten ermöglicht. Dieser Prozess beinhaltet typischerweise die Angabe des Quelldatensatzes (casdata), des Namens der Ziel-CAS-Tabelle (casout) und der Caslib, in der die Tabelle gespeichert wird. Die Option PROMOTE kann verwendet werden, um die Tabelle für alle aktiven CAS-Sitzungen sichtbar und zugänglich zu machen. Der Hauptvorteil dieses Ansatzes ist die signifikante Verbesserung der Leistung, da das serverseitige Laden für die parallele Verarbeitung großer Datenmengen optimiert ist, im Gegensatz zum sequenziellen clientseitigen Laden. Benutzer können den Quelldatensatz auch vor dem Laden in CAS mit den KEEP- oder DROP-Anweisungen in einem DATA-Schritt verfeinern.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder Datensätze aus der SASHELP-Bibliothek, um deren Autonomie zu gewährleisten.

1 Codeblock
DATA STEP / PROC CASUTIL Data
Erklärung :
Dieses Beispiel veranschaulicht das einfachste Laden eines SAS-Datensatzes (hier 'sample_data', erstellt aus SASHELP.CLASS) nach CAS. Der Datensatz wird zuerst in der 'work'-Bibliothek von SAS erstellt. Anschließend wird PROC CASUTIL verwendet, um 'sample_data' unter dem Namen 'sample_data_cas' in die Standard-Caslib 'CASUSER' in CAS zu laden, wobei jede vorhandene Tabelle desselben Namens ersetzt wird. Ein Überprüfungsschritt über eine CAS-Aktion `table.tableinfo` ist enthalten.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Crée un jeu de données SAS dans la bibliothèque WORK */
4DATA work.sample_data;
5 SET sashelp.class;
6 keep name sex age;
7RUN;
8 
9/* Charge le jeu de données SAS dans CAS (caslib par défaut: CASUSER) */
10PROC CASUTIL;
11 load casdata="sample_data" casout="sample_data_cas" replace;
12RUN;
13 
14/* Vérifie la table chargée dans CAS */
15PROC CAS;
16 TABLE.tableinfo RESULT=info / name="sample_data_cas" caslib="CASUSER";
17 PRINT info;
18QUIT;
2 Codeblock
DATA STEP / PROC CASUTIL Data
Erklärung :
Dieses Beispiel zeigt, wie gängige Optionen beim Laden verwendet werden. Ein Datensatz 'orders_local' wird mit Inline-Daten erstellt. Anschließend wird er in die Caslib 'CASUSER' geladen. Die Option `PROMOTE` wird verwendet, um die Tabelle 'orders_cas' in der CAS-Sitzung global zugänglich zu machen, was bedeutet, dass andere Benutzer oder Sitzungen darauf zugreifen können, wenn die Berechtigungen dies zulassen. `REPLACE` stellt sicher, dass, falls die Tabelle bereits existiert, sie überschrieben wird.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Création d'un jeu de données SAS local à charger */
4DATA work.orders_local;
5 INPUT OrderID Customer $ Amount;
6 DATALINES;
71001 Alice 250.00
81002 Bob 120.50
91003 Alice 300.00
101004 Charlie 80.25
11;
12RUN;
13 
14/* Charge le jeu de données SAS dans une caslib spécifique et le promeut */
15PROC CASUTIL;
16 load casdata="orders_local" casout="orders_cas" caslib="CASUSER" promote replace;
17RUN;
18 
19/* Vérification de la table promue dans CAS */
20PROC CAS;
21 TABLE.tableinfo RESULT=info / name="orders_cas" caslib="CASUSER";
22 PRINT info;
23QUIT;
3 Codeblock
PROC FORMAT / DATA STEP / PROC CASUTIL Data
Erklärung :
Dieses fortgeschrittene Beispiel veranschaulicht ein Szenario, in dem Daten vor dem Laden in CAS vorbereitet und angereichert werden. Ein benutzerdefiniertes SAS-Format ('$statusfmt') wird definiert und auf die Variable 'Status' in einem neuen Datensatz 'employees_local' angewendet. Dieser formatierte Datensatz wird anschließend in CAS geladen. Beim Abrufen (fetch) der CAS-Tabelle bleibt das Format erhalten und wird angezeigt, was zeigt, dass der Ladevorgang die Attribute der SAS-Variablen, einschließlich der Formate, respektiert.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Définition d'un format personnalisé pour une variable */
4PROC FORMAT;
5 value $statusfmt 'A' = 'Actif'
6 'I' = 'Inactif'
7 other = 'Inconnu';
8RUN;
9 
10/* Création d'un jeu de données SAS avec une variable à formater */
11DATA work.employees_local;
12 INPUT EmpID Name $ STATUS $;
13 FORMAT STATUS $statusfmt.; /* Applique le format */
14 DATALINES;
15201 John A
16202 Jane I
17203 Mike A
18204 Sara X
19;
20RUN;
21 
22/* Chargement du jeu de données formaté dans CAS */
23PROC CASUTIL;
24 load casdata="employees_local" casout="employees_cas" caslib="CASUSER" replace;
25RUN;
26 
27/* Vérification et affichage pour voir le format appliqué */
28PROC CAS;
29 TABLE.fetch RESULT=r / TABLE={name="employees_cas", caslib="CASUSER"};
30 PRINT r.Fetch;
31QUIT;
4 Codeblock
DATA STEP / PROC CASUTIL / PROC CAS (Actions CAS) Data
Erklärung :
Dieses Beispiel hebt die Integration mit der CAS-Umgebung von Viya für die verteilte Verarbeitung hervor. Es beginnt mit der Erstellung eines gefilterten SAS-Datensatzes ('filtered_class_local'). Dieser Datensatz wird anschließend in CAS geladen. Der Schlüsselteil ist die Verwendung von `proc cas`, um eine 'CAS-Aktion' (`simple.summary`) direkt auszuführen. Diese Aktion wurde entwickelt, um die verteilte Architektur von CAS zu nutzen, um den Durchschnittsalter nach Geschlecht effizient zu berechnen, was das Leistungspotenzial der In-Memory-Analyse auf dem CAS-Server demonstriert. Ein abschließender Bereinigungsblock wird hinzugefügt, um die in CAS erstellten Tabellen zu löschen.
Kopiert!
1LIBNAME mycas cas;
2 
3/* Crée un sous-ensemble du jeu de données SASHELP.CLASS avec un filtre */
4DATA work.filtered_class_local;
5 SET sashelp.class (where=(age >= 12));
6 keep name sex age;
7RUN;
8 
9/* Charge le sous-ensemble dans CAS */
10PROC CASUTIL;
11 load casdata="filtered_class_local" casout="filtered_class_cas" caslib="CASUSER" replace;
12RUN;
13 
14/* Utilise une action CAS (simple.summary) pour effectuer une agrégation distribuée */
15PROC CAS;
16 SIMPLE.summary RESULT=summary_res /
17 TABLE={name="filtered_class_cas", caslib="CASUSER"},
18 groupby={"sex"},
19 inputs={"age"};
20 PRINT summary_res;
21QUIT;
22 
23/* Nettoyage : suppression des tables CAS créées (facultatif) */
24PROC CASUTIL;
25 droptable casdata="sample_data_cas" caslib="CASUSER";
26 droptable casdata="orders_cas" caslib="CASUSER";
27 droptable casdata="employees_cas" caslib="CASUSER";
28 droptable casdata="filtered_class_cas" caslib="CASUSER";
29RUN;
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.