Veröffentlicht am :
ETL CREATION_INTERNE

MERGE-Operationen mit IN=-Option

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript beginnt mit der Erstellung von zwei temporären Datensätzen, 'empsau' (Mitarbeiter) und 'phonec' (Telefone), über DATA STEP-Blöcke, die DATALINES verwenden. Anschließend werden mehrere DATA STEP-Blöcke ausgeführt, um Fusionsszenarien zu demonstrieren: eine vollständige Fusion (entspricht einem Full Outer Join), eine Fusion, um nur die übereinstimmenden Datensätze zu erhalten (entspricht einem Inner Join), und schließlich Fusionen, um Datensätze zu isolieren, die nur im ersten Datensatz, nur im zweiten oder in keinem der beiden vorhanden sind. Jede Fusionsoperation wird von einer PROC PRINT gefolgt, um das Ergebnis anzuzeigen.
Datenanalyse

Type : CREATION_INTERNE


Die Daten 'empsau' und 'phonec' werden direkt im Skript über DATA STEP-Blöcke und die DATALINES-Anweisung erstellt. Sie werden dann innerhalb desselben Skripts verwendet und transformiert.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA STEP-Block erstellt den temporären Datensatz 'empsau' mit Informationen zu den Mitarbeitern (Vorname, Geschlecht, Mitarbeiter-ID). Die Daten werden direkt im Skript über die DATALINES-Anweisung bereitgestellt.
Kopiert!
1DATA empsau;
2 INPUT First $ Gender $ EmpID;
3 DATALINES;
4Togar M 121150
5Kylie F 121151
6Birin M 121152
7;
2 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA STEP-Block erstellt den temporären Datensatz 'phonec' mit Telefonnummern, die den Mitarbeiter-IDs zugeordnet sind. Die Daten werden ebenfalls direkt im Skript über DATALINES integriert.
Kopiert!
1DATA phonec;
2 INPUT EmpID Phone $15.;
3 DATALINES;
4121150 +61(2)5555-1795
5121152 +61(2)5555-1667
6121153 +61(2)5555-1348
7;
3 Codeblock
DATA STEP
Erklärung :
Dieser DATA STEP-Block führt eine vollständige Fusion (Full Outer Join) der Datensätze 'empsau' und 'phonec' basierend auf der gemeinsamen Variablen 'EmpID' durch. Die IN=-Optionen (Emps, Cell) erstellen temporäre boolesche Variablen (_Emps und _Cell), die angeben, ob ein Datensatz aus 'empsau' oder 'phonec' stammt. PROC PRINT zeigt alle zusammengeführten Datensätze an, einschließlich derer, die nur in einem der beiden Datensätze vorhanden sind.
Kopiert!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5RUN;
6 
7PROC PRINT DATA=empsauc;
8RUN;
4 Codeblock
DATA STEP
Erklärung :
Dieser DATA STEP-Block führt eine innere Verknüpfung (Inner Join) durch. Nach der Fusion filtert die Bedingung 'if Emps=1 and Cell=1;' die Datensätze, um nur diejenigen zu behalten, deren Mitarbeiter-ID sowohl in 'empsau' als auch in 'phonec' vorhanden ist. PROC PRINT zeigt nur die Übereinstimmungen an.
Kopiert!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=1 and Cell=1;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
5 Codeblock
DATA STEP
Erklärung :
Dieser DATA STEP-Block identifiziert Datensätze, die in 'empsau' (Emps=1) vorhanden sind, aber in 'phonec' (Cell=0) fehlen. Dies entspricht einem linken Anti-Join. PROC PRINT zeigt die Mitarbeiter ohne telefonische Übereinstimmung in 'phonec' an.
Kopiert!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=1 and Cell=0;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
6 Codeblock
DATA STEP
Erklärung :
Dieser DATA STEP-Block identifiziert Datensätze, die in 'phonec' (Cell=1) vorhanden sind, aber in 'empsau' (Emps=0) fehlen. Dies entspricht einem rechten Anti-Join. PROC PRINT zeigt die Telefonnummern ohne Mitarbeiter-Übereinstimmung in 'empsau' an.
Kopiert!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=0 and Cell=1;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
7 Codeblock
DATA STEP
Erklärung :
Dieser DATA STEP-Block wählt alle Datensätze aus, die nicht übereinstimmen. Die Bedingung 'if Emps=0 or Cell=0;' filtert Datensätze, die nur in 'empsau' oder nur in 'phonec' vorhanden sind. PROC PRINT zeigt die Datensätze an, die keine Übereinstimmung im anderen Datensatz finden.
Kopiert!
1DATA empsauc;
2 MERGE empsau(in=Emps)
3 phonec(in=Cell);
4 BY EmpID;
5 IF Emps=0 or Cell=0;
6RUN;
7 
8PROC PRINT DATA=empsauc;
9RUN;
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.