Veröffentlicht am :
ETL CREATION_INTERNE

CAS-Tabelle mit WHERE-Parameter hinzufügen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die CAS-Aktion 'table.append' wird verwendet, um Zeilen von einer Quelltabelle (im Speicher oder promotet) zu einer bestehenden Zieltabelle in CAS zu übertragen. Der Parameter 'WHERE' in der Option 'source' ermöglicht die Angabe einer logischen Bedingung. Nur die Zeilen der Quelltabelle, die diese Bedingung erfüllen, werden zur Zieltabelle hinzugefügt. Die Ausführung erfolgt im verteilten Speicher auf dem CAS-Server, was für große Datenmengen optimiert ist. Die Zieltabelle muss bereits existieren.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (datalines) oder in CAS geladene SASHELP-Tabellen.

1 Codeblock
PROC CAS / DATA STEP Data
Erklärung :
Dieses Beispiel initialisiert zwei CAS-Tabellen, 'class_source' (aus SASHELP.CLASS) und 'class_target' (leer). Anschließend wird 'table.append' verwendet, um alle Zeilen von 'class_source' ohne Filterbedingung zu 'class_target' hinzuzufügen. Abschließend wird der Inhalt der Zieltabelle angezeigt.
Kopiert!
1/* Charger la table SASHELP.CLASS en CAS */
2PROC CASUTIL;
3 load DATA=sashelp.class outcaslib="casuser" casout="class_source" replace;
4RUN;
5 
6/* Créer une table cible vide avec la même structure en CAS */
7DATA casuser.class_target;
8 SET casuser.class_source(obs=0);
9RUN;
10 
11PROC CAS;
12 /* Ajouter toutes les lignes de class_source à class_target */
13 TABLE.append /
14 SOURCE={caslib='casuser', name='class_source'}
15 target={caslib='casuser', name='class_target'};
16RUN;
17 
18/* Vérifier le contenu de la table cible */
19PROC PRINT DATA=casuser.class_target;
20RUN;
2 Codeblock
PROC CAS / DATA STEP Data
Erklärung :
Dieses Beispiel lädt die vollständige SASHELP.CLASS-Tabelle in CAS unter dem Namen 'class_full'. Es erstellt eine 'class_filtered'-Tabelle mit einigen anfänglichen Beobachtungen. Anschließend wird 'table.append' mit dem Parameter 'where="Age >= 15"' verwendet, um nur die Beobachtungen aus 'class_full' zur Tabelle 'class_filtered' hinzuzufügen, bei denen das Alter 15 Jahre oder mehr beträgt. Der endgültige Inhalt von 'class_filtered' wird angezeigt.
Kopiert!
1/* Charger la table SASHELP.CLASS en CAS */
2PROC CASUTIL;
3 load DATA=sashelp.class outcaslib="casuser" casout="class_full" replace;
4RUN;
5 
6/* Créer une table cible avec quelques données initiales */
7DATA casuser.class_filtered;
8 INPUT Name $ Sex $ Age Height Weight;
9 DATALINES;
10 Alfred M 14 69.0 112.5
11 Alice F 13 56.5 84.0
12 ;
13RUN;
14 
15PROC CAS;
16 /* Ajouter uniquement les étudiants dont l'âge est supérieur ou égal à 15 ans */
17 TABLE.append /
18 SOURCE={caslib='casuser', name='class_full', where="Age >= 15"}
19 target={caslib='casuser', name='class_filtered'};
20RUN;
21 
22/* Vérifier le contenu de la table cible */
23PROC PRINT DATA=casuser.class_filtered;
24RUN;
3 Codeblock
PROC CAS / DATA STEP Data
Erklärung :
Dieses Beispiel demonstriert einen fortgeschrittenen Fall, in dem Daten zuerst in einer neuen CAS-Tabelle ('students_processed') transformiert werden, indem ein Durchschnittswert und ein Status berechnet werden. Anschließend wird 'table.append' verwendet, um nur die Beobachtungen aus 'students_processed' zur Tabelle 'high_achievers' hinzuzufügen, die eine komplexe 'WHERE'-Bedingung erfüllen: Der Status muss 'Excellent' UND das Geschlecht muss 'Weiblich' sein. Dies veranschaulicht, wie Datenaufbereitungsschritte mit einem bedingten Hinzufügen kombiniert werden können.
Kopiert!
1/* Créer une table source avec des données brutes en CAS */
2DATA casuser.students_raw;
3 INPUT StudentID Name $ Gender $ Score1 Score2;
4 DATALINES;
5 101 Jean M 85 92
6 102 Marie F 78 88
7 103 Pierre M 91 75
8 104 Sophie F 65 95
9 105 Paul M 80 81
10 ;
11RUN;
12 
13/* Créer une table cible avec des données initiales */
14DATA casuser.high_achievers;
15 INPUT StudentID Name $ Gender $ AverageScore STATUS$;
16 DATALINES;
17 201 Marc M 90 Initial
18 ;
19RUN;
20 
21PROC CAS;
22 /* Calculer le score moyen et déterminer un statut avant d'ajouter */
23 DATA casuser.students_processed;
24 SET casuser.students_raw;
25 AverageScore = (Score1 + Score2) / 2;
26 IF AverageScore >= 85 THEN STATUS = 'Excellent';
27 ELSE STATUS = 'Good';
28 RUN;
29 
30 /* Ajouter uniquement les étudiants 'Excellent' et de sexe féminin */
31 TABLE.append /
32 SOURCE={caslib='casuser', name='students_processed', where="Status = 'Excellent' AND Gender = 'F'"}
33 target={caslib='casuser', name='high_achievers'};
34RUN;
35 
36/* Vérifier le contenu de la table cible */
37PROC PRINT DATA=casuser.high_achievers;
38RUN;
4 Codeblock
PROC CAS / DATA STEP Data
Erklärung :
Dieses Beispiel erstellt eine temporäre SAS-Tabelle 'temp_large' mit 1000 Beobachtungen, lädt sie dann in CAS als 'large_data_source' hoch und 'promotiert' sie. Es erstellt auch eine leere promotete Zieltabelle 'filtered_promoted'. Anschließend wird 'table.append' verwendet, um 'filtered_promoted' nur die Zeilen hinzuzufügen, bei denen 'Value < 10'. Der Viya/CAS-Aspekt wird durch die Verwendung von promoteten Tabellen hervorgehoben, die über die aktuelle Sitzung hinaus bestehen bleiben, und einen abschließenden Bereinigungsblock zum Löschen aller während der Beispiele erstellten CAS-Tabellen.
Kopiert!
1/* Créer une table source temporaire avec un grand nombre d'observations */
2DATA _null_;
3 DO i = 1 to 1000;
4 ID = i;
5 Value = mod(i, 100);
6 OUTPUT;
7 END;
8RUN;
9 
10PROC CASUTIL;
11 load DATA=work.temp_large outcaslib="casuser" casout="large_data_source" promote replace;
12RUN;
13 
14/* Créer une table cible promotée vide */
15PROC CASUTIL;
16 load DATA=work.temp_large(obs=0) outcaslib="casuser" casout="filtered_promoted" promote replace;
17RUN;
18 
19PROC CAS;
20 /* Ajouter des lignes à la table promotée 'filtered_promoted' avec une condition WHERE */
21 /* L'utilisation de 'promote' assure la persistance de la table au-delà de la session */
22 TABLE.append /
23 SOURCE={caslib='casuser', name='large_data_source', where="Value < 10"}
24 target={caslib='casuser', name='filtered_promoted'};
25RUN;
26 
27/* Vérifier le contenu de la table cible promotée */
28PROC PRINT DATA=casuser.filtered_promoted;
29RUN;
30 
31/* Nettoyage : supprimer les tables CAS après utilisation */
32PROC CAS;
33 TABLE.dropTable / caslib='casuser', name='large_data_source';
34 TABLE.dropTable / caslib='casuser', name='filtered_promoted';
35 TABLE.dropTable / caslib='casuser', name='students_raw';
36 TABLE.dropTable / caslib='casuser', name='high_achievers';
37 TABLE.dropTable / caslib='casuser', name='class_source';
38 TABLE.dropTable / caslib='casuser', name='class_target';
39 TABLE.dropTable / caslib='casuser', name='class_full';
40 TABLE.dropTable / caslib='casuser', name='class_filtered';
41 TABLE.dropTable / caslib='casuser', name='students_processed';
42RUN;
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.