Tabellen mit der BY-Anweisung kombinieren

Dieser Code ist auch verfügbar auf: English Español
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Beim Kombinieren von SAS©-Tabellen ist die Reihenfolge der Zeilen in einer CAS-Tabelle nicht unbedingt die Reihenfolge, in der sie verarbeitet werden. Im Gegensatz zu SAS© 9, das die Eingabereihenfolge der Zeilen garantiert, bieten CAS-Tabellen diese Garantie nicht, da sie auf mehrere Grid-Knoten verteilt sind. Beim Partitionieren werden BY-Gruppen auf einem einzelnen Knoten aus Zeilen gebildet, die von mehreren Workern stammen.
Die Reihenfolge der Zeilen innerhalb einer Partition ist nicht stabil. Um eine stabile Sortierung zu erreichen, wird empfohlen, mehr BY-Variablen zu verwenden. Zum Beispiel bei 'BY ID;' werden die Zeilen nach dem formatierten Wert von ID gruppiert und dann nach dem Rohwert von ID sortiert. Die ursprüngliche Reihenfolge der Zeilen wird nicht berücksichtigt. Bei 'BY ID DATE;' werden die Zeilen nach dem formatierten Wert von ID gruppiert und dann nach den Rohwerten von ID und DATE sortiert.
Die BY-Anweisung kombiniert Zeilen aus zwei Datensätzen, die die gleichen Werte für die BY-Variable haben. Diese Funktionalität ist entscheidend für komplexe Datenmanipulationsoperationen und um konsistente Ergebnisse in verteilten Umgebungen wie CAS zu gewährleisten.
Datenanalyse

Type : INTERNE_ERZEUGUNG


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP.

1 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel zeigt die Verkettung zweier Tabellen (animal1 und plant1) mithilfe der SET-Anweisung ohne die BY-Anweisung. Die Zeilen von 'plant1' werden einfach an das Ende von 'animal1' angehängt. Dies ist eine grundlegende Operation zum Kombinieren von Daten.
Kopiert!
1DATA animal1;
2 INPUT Common $ Animal $ 3-8 Number 10-11;
3 DATALINES;
4a Ant 1
5b Bird 2
6c Cat 3
7d Dog 4
8e Eagle 5
9f Frog 6
10g Goose 7
11h Hawk 8
12i Impala 9
13;
14 
15DATA plant1;
16 INPUT Common $ Plant $ 3-10 Number 12-13;
17 DATALINES;
18a Grape 1
19c Hazelnut 2
20e Indigo 3
21g Jicama 4
22i Kale 5
23;
24 
25/* Concaténer animal1 et plant1 */
26DATA append_basique;
27 SET animal1 plant1;
28RUN;
29 
30PROC PRINT DATA=append_basique;
31 title '1. Concaténation de tables Animal et Plant (Base SAS)';
32RUN;
2 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel verwendet die BY-Anweisung mit einer einzelnen Variablen ('Common'), um die Datensätze der Tabellen 'animal1' und 'plant1' zu verschachteln. Die Zeilen werden basierend auf den entsprechenden Werten der Variablen 'Common' kombiniert.
Kopiert!
1DATA animal1;
2 INPUT Common $ Animal $ 3-8 Number 10-11;
3 DATALINES;
4a Ant 1
5b Bird 2
6c Cat 3
7d Dog 4
8e Eagle 5
9f Frog 6
10g Goose 7
11h Hawk 8
12i Impala 9
13;
14 
15DATA plant1;
16 INPUT Common $ Plant $ 3-10 Number 12-13;
17 DATALINES;
18a Grape 1
19c Hazelnut 2
20e Indigo 3
21g Jicama 4
22i Kale 5
23;
24 
25/* Entrelacer animal1 et plant1 par la variable COMMON */
26DATA interleave_by_common;
27 SET animal1 plant1;
28 BY common;
29RUN;
30 
31PROC PRINT DATA=interleave_by_common;
32 title '2. Entrelacement par la variable COMMON (Base SAS)';
33RUN;
3 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel demonstriert eine fortgeschrittenere Verschachtelung mithilfe der BY-Anweisung mit zwei Variablen ('Common' und 'Number'). Dies ermöglicht eine granularere Steuerung der Reihenfolge, in der die Zeilen der beiden Tabellen 'animal1' und 'plant1' kombiniert werden.
Kopiert!
1DATA animal1;
2 INPUT Common $ Animal $ 3-8 Number 10-11;
3 DATALINES;
4a Ant 1
5b Bird 2
6c Cat 3
7d Dog 4
8e Eagle 5
9f Frog 6
10g Goose 7
11h Hawk 8
12i Impala 9
13;
14 
15DATA plant1;
16 INPUT Common $ Plant $ 3-10 Number 12-13;
17 DATALINES;
18a Grape 1
19c Hazelnut 2
20e Indigo 3
21g Jicama 4
22i Kale 5
23;
24 
25/* Entrelacer animal1 et plant1 par COMMON et Number */
26DATA interleave_by_common_number;
27 SET animal1 plant1;
28 BY common Number;
29RUN;
30 
31PROC PRINT DATA=interleave_by_common_number;
32 title '3. Entrelacement par COMMON et Number (Base SAS)';
33RUN;
4 Codeblock
DATA STEP / PROC CASUTIL Data
Erklärung :
Dieses Beispiel demonstriert, wie eine Verschachtelung von Tabellen in der CAS-Umgebung durchgeführt wird. Es beginnt mit der Erstellung von Basis-SAS-Tabellen, lädt diese mithilfe von PROC CASUTIL als CAS-Tabellen und verwendet dann einen DATA Step mit der BY-Anweisung, um die Tabellen direkt im verteilten Speicher zu verschachteln. Die Verarbeitungsreihenfolge in CAS kann aufgrund von Parallelität und Partitionierung von der von Base SAS abweichen. Die Variable `_hostname_` wird hinzugefügt, um zu beobachten, auf welchem Knoten die Daten verarbeitet wurden, was die verteilte Natur von CAS veranschaulicht.
Kopiert!
1LIBNAME mycas cas;
2 
3DATA animal_cas;
4 INPUT Common $ Animal $ 3-8 Number 10-11;
5 DATALINES;
6a Ant 1
7b Bird 2
8c Cat 3
9d Dog 4
10e Eagle 5
11f Frog 6
12g Goose 7
13h Hawk 8
14i Impala 9
15;
16 
17DATA plant_cas;
18 INPUT Common $ Plant $ 3-10 Number 12-13;
19 DATALINES;
20a Grape 1
21c Hazelnut 2
22e Indigo 3
23g Jicama 4
24i Kale 5
25;
26 
27PROC CASUTIL;
28 load DATA=animal_cas outcaslib='CASUSER' casout='ANIMAL_CAS' replace;
29 load DATA=plant_cas outcaslib='CASUSER' casout='PLANT_CAS' replace;
30RUN;
31 
32/* Entrelacer les tables CAS par la variable COMMON */
33DATA mycas.interleaveByCommonCas;
34 SET mycas.animal_cas mycas.plant_cas;
35 BY common;
36 /* La variable _hostname_ peut être utile pour observer la distribution */
37 hostname=_hostname_;
38RUN;
39 
40PROC PRINT DATA=mycas.interleaveByCommonCas;
41 title '4. Entrelacement par COMMON dans un DATA Step en CAS';
42RUN;
43 
44/* Nettoyage des tables CAS */
45PROC CASUTIL;
46 droptable casdata='ANIMAL_CAS' incaslib='CASUSER';
47 droptable casdata='PLANT_CAS' incaslib='CASUSER';
48 droptable casdata='INTERLEAVEBYCOMMONCAS' incaslib='CASUSER';
49RUN;
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.

Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.