Recherche…


Introduction

Chaque base de données est une collection de différentes tables et chaque table contient des données différentes de manière organisée. Lorsque vous travaillez avec des données, la plupart des informations dont nous avons besoin sont dispersées dans plus d'une table. Nous avons besoin de jointures / fusions pour obtenir le résultat souhaité.

Dans SAS, nous utilisons des jointures lorsque nous travaillons avec Proc SQL et utilisons la fusion tout en travaillant avec l' Data step . Nous ne parlerons plus que des jointures dans Proc SQL .

Paramètres

Type de jointure Sortie
Proc Sql Procédure SQL dans SAS
Créer une table Crée un jeu de données SAS
Sélectionner Sélectionne les variables requises des ensembles de données respectifs
Spécifie une condition particulière
Quitter Mettre fin à la procédure

Remarques

Comme mentionné dans l'introduction, nous pouvons également utiliser Merge dans une data step qui sera discutée dans un sujet distinct. Les jointures jouent un rôle très important pour mélanger et unifier les données en fonction des besoins.

Jointure verticale

La jointure verticale ajoute le jeu de données B au jeu de données A, à condition que les deux aient des variables similaires. Par exemple, nous avons des ventes pour le mois de janvier 17 dans le jeu de données A et les ventes pour le mois de février 17 dans le jeu de données B. Pour créer un jeu de données avec des ventes de janvier et de février, nous utilisons Vertical Join.

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

Maintenant, le jeu de données C contient des observations à la fois de A et de B et est ajouté verticalement.

Jointure interne

La jointure interne crée un ensemble de données qui contient des enregistrements dont les valeurs correspondent à celles des deux tables. Par exemple, nous avons un jeu de données A contenant des informations sur les clients et un jeu de données B contenant les détails de la carte de crédit. Pour obtenir les détails de carte de crédit des clients dans le jeu de données A, créons un jeu de données C

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

Le jeu de données C n'aura que des observations correspondantes provenant des deux jeux de données.

Joint gauche

La jointure à gauche renvoie toutes les observations dans le jeu de données de gauche, indépendamment de leurs valeurs de clé, mais uniquement des observations avec des valeurs de clé correspondantes provenant du jeu de données correct. Considérant le même exemple que ci-dessus,

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;

Le jeu de données C contient toutes les valeurs de la table de gauche, ainsi que les valeurs correspondantes de la table de droite ou les valeurs manquantes en cas de non-correspondance.

Droit rejoindre

Comme la jointure gauche, la jointure droite sélectionne toutes les observations du jeu de données droit et les enregistrements correspondants de la table gauche.

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;

Le jeu de données C contient toutes les valeurs de la table de droite, ainsi que les valeurs correspondantes de la table de gauche ou les valeurs manquantes en cas de non-correspondance.

Full Join

La jointure complète sélectionne toutes les observations des deux ensembles de données, mais il manque des valeurs pour lesquelles la valeur clé de chaque observation se trouve dans une seule table.

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;

Le jeu de données C contiendra tous les enregistrements des deux tables et les remplira . pour les matchs manquants de chaque côté.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow