Suche…


Einführung

Jede Datenbank ist eine Sammlung verschiedener Tabellen und jede Tabelle enthält verschiedene Daten auf organisierte Weise. Während der Arbeit mit Daten sind die meisten Informationen, die wir benötigen, in mehreren Tabellen verstreut. Wir brauchen Joins / Merge, um die gewünschte Ausgabe zu erhalten.

In SAS verwenden wir Joins während der Arbeit mit Proc SQL und die Zusammenführung während der Arbeit mit dem Data step . Wir werden jetzt nur über Joins in Proc SQL sprechen.

Parameter

Art der Verbindung Ausgabe
Proc Sql SQL-Prozedur in SAS
Tabelle erstellen Erstellt ein SAS-Dataset
Wählen Wählt die erforderlichen Variablen aus den jeweiligen Datensätzen aus
Woher Gibt eine bestimmte Bedingung an
Verlassen Beenden Sie den Vorgang

Bemerkungen

Wie in der Einleitung erwähnt, können wir verwenden auch Merge innerhalb eines data step , die unter einem separaten Thema diskutiert werden. Verknüpfungen spielen eine sehr wichtige Rolle, um Daten je nach Anforderung zu mischen und zu vereinheitlichen.

Vertikales Fügen

Der vertikale Join hängt den Datensatz B an den Datensatz A an, sofern beide über ähnliche Variablen verfügen. Zum Beispiel haben wir Verkäufe für den Monat Jan'17 in Datensatz A und Verkäufe für Feb'17 in Datensatz B. Zum Erstellen eines Datensatzes C, der sowohl Verkäufe von Jan als auch von Feb aufweist, verwenden wir Vertical Join.

PROC SQL;
CREATE TABLE C AS
SELECT *
FROM A
UNION 
SELECT *
FROM B;
QUIT;

Jetzt hat Datensatz C Beobachtungen von A und B und wird vertikal angehängt.

Inner Join

Inner Join erstellt ein Dataset, das Datensätze enthält, die übereinstimmende Werte aus beiden Tabellen aufweisen. Beispielsweise haben wir eine Datenmenge A, die Kundeninformationen enthält, und eine Datenmenge B, die Kreditkartendetails enthält. Um die Kreditkartendaten von Kunden in Datensatz A zu erhalten, lassen Sie uns Datensatz C erstellen

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUM
FROM CUSTOMER A, CC_DETAILS B
WHERE A.CUSTOMERID=B.CUSTOMERID
QUIT;

Datensatz C enthält nur übereinstimmende Beobachtungen aus beiden Datensätzen.

Linker Join gibt alle Beobachtungen im linken Datensatz unabhängig von ihren Schlüsselwerten zurück, jedoch nur Beobachtungen mit übereinstimmenden Schlüsselwerten aus dem rechten Datensatz. Wenn man das gleiche Beispiel wie oben betrachtet,

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A LEFT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

Datensatz C enthält alle Werte aus der linken Tabelle sowie übereinstimmende Werte aus der rechten Tabelle oder fehlende Werte, falls keine Übereinstimmung vorliegt.

Richtig beitreten

Wie beim linken Join wählt der rechte Join alle Beobachtungen aus dem rechten Datensatz und die übereinstimmenden Datensätze aus der linken Tabelle aus.

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A RIGHT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

Datensatz C enthält alle Werte aus der rechten Tabelle sowie übereinstimmende Werte aus der linken Tabelle oder fehlende Werte, falls keine Übereinstimmung vorliegt.

Voll beitreten

Full Join wählt alle Beobachtungen aus beiden Datensätzen aus. Es fehlen jedoch Werte, bei denen der Schlüsselwert jeder Beobachtung nur in einer Tabelle gefunden wird.

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A FULL JOIN CC_DETAILS B 
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

Datensatz C enthält alle Datensätze aus beiden Tabellen und füllt diese aus . für fehlende Spiele auf beiden Seiten.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow