sas
Verwenden von Joins in SAS
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.
Links beitreten
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.