Sök…


Introduktion

Varje databas är en samling olika tabeller och varje tabell innehåller olika data på ett organiserat sätt. När vi arbetar med data sprids informationen vi behöver oftast i mer än en tabell. Vi behöver sammanfogningar / sammanslagning för att få önskad utdata.

I SAS använder vi joins medan vi arbetar med Proc SQL och använder merge medan vi arbetar med Data step . Vi kommer nu bara att prata om anslutningar i Proc SQL .

parametrar

Typ av sammankoppling Produktion
Proc Sql SQL-procedur i SAS
Skapa bord Skapar ett SAS-datasätt
Välj Väljer önskade variabler från respektive datasats
Var Anger särskilt villkor
Sluta Avsluta proceduren

Anmärkningar

Som nämnts i inledningen kan vi också använda Merge i ett data step som kommer att diskuteras under ett separat ämne. Skarvar spelar en mycket viktig roll för att blanda och förena data enligt kravet.

Vertikal sammanfogning

Vertical join lägger till datasæt B till dataset A förutsatt att båda har liknande variabler. Vi har till exempel försäljning för Jan'17-månaden i dataset A och försäljning för Feb'17 i dataset B. För att skapa ett datasæt C som har försäljning av både Jan och Feb använder vi Vertical Join.

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

Nu har datasätt C observationer från både A och B och bifogas vertikalt.

Inre koppling

Inre sammanfogning skapar ett dataset som innehåller poster som har matchande värden från båda tabellerna. Vi har till exempel ett dataset A som innehåller kundinformation och ett dataset B som innehåller kreditkortsuppgifter. För att få kreditkortsinformation om kunder i dataset A, låt oss skapa datasätt C

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

Dataset C kommer endast att ha matchande observationer från båda datauppsättningarna.

Vänster gå med

Vänster koppling returnerar alla observationer i den vänstra datauppsättningen oavsett deras nyckelvärden men endast observationer med matchande nyckelvärden från den högra datauppsättningen. Med tanke på samma exempel som ovan,

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;

Dataset C innehåller alla värden från den vänstra tabellen, plus matchade värden från den högra tabellen eller saknade värden om det inte finns någon matchning.

Höger gå med

Liksom vänster sammanfogning väljer högerkoppling alla observationer från det högra datasatsen och de matchade posterna från vänsterbordet.

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;

Dataset C innehåller alla värden från den högra tabellen, plus matchade värden från den vänstra tabellen eller saknade värden om det inte finns någon matchning.

Full gå med

Full koppling väljer alla observationer från båda datauppsättningarna men det saknas värden där nyckelvärdet i varje observation endast finns i en tabell.

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;

Dataset C kommer att innehålla alla poster från både tabellerna och fylla i . för saknade matcher på båda sidor.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow