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!
/* Charger la table SASHELP.CLASS en CAS */
proc casutil;
load data=sashelp.class outcaslib="casuser" casout="class_source" replace;
run;
/* Créer une table cible vide avec la même structure en CAS */
data casuser.class_target;
set casuser.class_source(obs=0);
run;
proc cas;
/* Ajouter toutes les lignes de class_source à class_target */
table.append /
source={caslib='casuser', name='class_source'}
target={caslib='casuser', name='class_target'};
run;
/* Vérifier le contenu de la table cible */
proc print data=casuser.class_target;
run;
/* Créer une table cible vide avec la même structure en CAS */
7
DATA casuser.class_target;
8
SET casuser.class_source(obs=0);
9
RUN;
10
11
PROC 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'};
16
RUN;
17
18
/* Vérifier le contenu de la table cible */
19
PROC PRINTDATA=casuser.class_target;
20
RUN;
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!
/* Charger la table SASHELP.CLASS en CAS */
proc casutil;
load data=sashelp.class outcaslib="casuser" casout="class_full" replace;
run;
/* Créer une table cible avec quelques données initiales */
data casuser.class_filtered;
input Name $ Sex $ Age Height Weight;
datalines;
Alfred M 14 69.0 112.5
Alice F 13 56.5 84.0
;
run;
proc cas;
/* Ajouter uniquement les étudiants dont l'âge est supérieur ou égal à 15 ans */
table.append /
source={caslib='casuser', name='class_full', where="Age >= 15"}
target={caslib='casuser', name='class_filtered'};
run;
/* Vérifier le contenu de la table cible */
proc print data=casuser.class_filtered;
run;
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!
/* Créer une table source avec des données brutes en CAS */
data casuser.students_raw;
input StudentID Name $ Gender $ Score1 Score2;
datalines;
101 Jean M 85 92
102 Marie F 78 88
103 Pierre M 91 75
104 Sophie F 65 95
105 Paul M 80 81
;
run;
/* Créer une table cible avec des données initiales */
data casuser.high_achievers;
input StudentID Name $ Gender $ AverageScore Status$;
datalines;
201 Marc M 90 Initial
;
run;
proc cas;
/* Calculer le score moyen et déterminer un statut avant d'ajouter */
data casuser.students_processed;
set casuser.students_raw;
AverageScore = (Score1 + Score2) / 2;
if AverageScore >= 85 then Status = 'Excellent';
else Status = 'Good';
run;
/* Ajouter uniquement les étudiants 'Excellent' et de sexe féminin */
table.append /
source={caslib='casuser', name='students_processed', where="Status = 'Excellent' AND Gender = 'F'"}
target={caslib='casuser', name='high_achievers'};
run;
/* Vérifier le contenu de la table cible */
proc print data=casuser.high_achievers;
run;
1
/* Créer une table source avec des données brutes en CAS */
2
DATA casuser.students_raw;
3
INPUT StudentID Name $ Gender $ Score1 Score2;
4
DATALINES;
5
101 Jean M 8592
6
102 Marie F 7888
7
103 Pierre M 9175
8
104 Sophie F 6595
9
105 Paul M 8081
10
;
11
RUN;
12
13
/* Créer une table cible avec des données initiales */
14
DATA casuser.high_achievers;
15
INPUT StudentID Name $ Gender $ AverageScore STATUS$;
16
DATALINES;
17
201 Marc M 90 Initial
18
;
19
RUN;
20
21
PROC 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 >= 85THENSTATUS = 'Excellent';
27
ELSESTATUS = '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'};
34
RUN;
35
36
/* Vérifier le contenu de la table cible */
37
PROC PRINTDATA=casuser.high_achievers;
38
RUN;
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!
/* Créer une table source temporaire avec un grand nombre d'observations */
data _null_;
do i = 1 to 1000;
ID = i;
Value = mod(i, 100);
output;
end;
run;
proc casutil;
load data=work.temp_large outcaslib="casuser" casout="large_data_source" promote replace;
run;
/* Créer une table cible promotée vide */
proc casutil;
load data=work.temp_large(obs=0) outcaslib="casuser" casout="filtered_promoted" promote replace;
run;
proc cas;
/* Ajouter des lignes à la table promotée 'filtered_promoted' avec une condition WHERE */
/* L'utilisation de 'promote' assure la persistance de la table au-delà de la session */
table.append /
source={caslib='casuser', name='large_data_source', where="Value < 10"}
target={caslib='casuser', name='filtered_promoted'};
run;
/* Vérifier le contenu de la table cible promotée */
proc print data=casuser.filtered_promoted;
run;
/* Nettoyage : supprimer les tables CAS après utilisation */
proc cas;
table.dropTable / caslib='casuser', name='large_data_source';
table.dropTable / caslib='casuser', name='filtered_promoted';
table.dropTable / caslib='casuser', name='students_raw';
table.dropTable / caslib='casuser', name='high_achievers';
table.dropTable / caslib='casuser', name='class_source';
table.dropTable / caslib='casuser', name='class_target';
table.dropTable / caslib='casuser', name='class_full';
table.dropTable / caslib='casuser', name='class_filtered';
table.dropTable / caslib='casuser', name='students_processed';
run;
1
/* Créer une table source temporaire avec un grand nombre d'observations */
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.