Publié le :
ETL CREATION_INTERNE

Exemples : Fusion de données un à un

Ce code est également disponible en : Deutsch English Español
En attente de validation
La déclaration MERGE, lorsqu'elle est utilisée sans une instruction BY, effectue une fusion un à un en faisant correspondre implicitement les observations sur la base du numéro de ligne, ignorant les valeurs des variables. Si les jeux de données d'entrée ont des noms de colonnes identiques, les valeurs des variables communes du dernier jeu de données spécifié dans la déclaration MERGE écrasent les valeurs des jeux de données précédemment spécifiés. Les colonnes non partagées sont ajoutées comme nouvelles colonnes. Le jeu de données de sortie contient toutes les observations de tous les jeux de données d'entrée, quel que soit leur nombre d'observations initial. L'option système MERGENOBY peut être utilisée pour contrôler la journalisation des messages lors d'une fusion un à un.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) pour assurer l'autonomie du code.

1 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple illustre une fusion un à un de deux jeux de données, 'animal' et 'plantG', qui ont un nombre égal d'observations. La déclaration MERGE est utilisée sans instruction BY. Les valeurs de la variable 'common' dans 'plantG' (le dernier jeu de données spécifié) écrasent celles d''animal' à la sixième observation, où elles diffèrent. Les variables non communes sont ajoutées, et toutes les observations sont incluses dans le résultat.
Copié !
1DATA animal;
2 INPUT common $ animal $;
3 DATALINES;
4a Ant
5b Bird
6c Cat
7d Dog
8e Eagle
9f Frog
10;
11DATA plantG;
12 INPUT common $ plant $;
13 DATALINES;
14a Apple
15b Banana
16c Coconut
17d Dewberry
18e Eggplant
19g Fig
20;
21DATA merged;
22 MERGE animal plantG;
23RUN;
24 
25PROC PRINT DATA=merged; RUN;
2 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Ce cas de figure montre une fusion un à un entre 'animal' (6 observations) et 'plantMissing' (3 observations). La déclaration MERGE sans instruction BY traitera tous les enregistrements de chaque jeu de données en les combinant ligne par ligne. Les observations manquantes dans le jeu de données plus court ('plantMissing') entraînent des valeurs manquantes dans les colonnes correspondantes du jeu de données résultant là où il n'y a pas de correspondance implicite, car la fusion continue jusqu'à ce que toutes les observations de tous les jeux de données soient traitées. Si la déclaration 'SET' avait été utilisée, le programme se serait arrêté après avoir lu le dernier enregistrement du plus petit jeu de données.
Copié !
1DATA animal;
2INPUT common $ animal $;
3DATALINES;
4a Ant
5b Bird
6c Cat
7d Dog
8e Eagle
9f Frog
10;
11 
12DATA plantMissing;
13INPUT common $ plant $;
14DATALINES;
15a Apple
16b Banana
17c Coconut
18;
19 
20DATA merged;
21 MERGE animal plantmissing;
22RUN;
23PROC PRINT DATA=merged; RUN;
3 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple illustre les résultats potentiellement indésirables d'une fusion un à un sans instruction BY, lorsque les jeux de données ('animalDupes', 'plantDupes') contiennent des valeurs dupliquées pour la variable 'common'. Les fusions un à un sont conçues pour des données avec une relation un à un. Dans ce scénario (relations un à plusieurs ou plusieurs à un), la fusion se fait ligne par ligne, écrasant les valeurs des variables communes et pouvant entraîner une perte d'informations ou une combinaison incorrecte des observations.
Copié !
1DATA animalDupes;
2INPUT common $ animal $;
3DATALINES;
4a Ant
5a Ape
6b Bird
7c Cat
8d Dog
9e Eagle
10;
11 
12DATA plantDupes;
13INPUT common $ plant $;
14DATALINES;
15a Apple
16b Banana
17c Coconut
18c Celery
19d Dewberry
20e Eggplant
21;
22 
23DATA merged;
24 MERGE animalDupes plantDupes;
25RUN;
26PROC PRINT DATA=merged; RUN;
4 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple démontre les résultats indésirables d'une fusion un à un sans instruction BY lorsque les jeux de données ('animalMissing', 'plantMissing2') ont des valeurs différentes pour leur variable commune 'common'. La fusion se fait ligne par ligne, et les valeurs de 'plantMissing2' écrasent celles d''animalMissing' pour la variable 'common'. En l'absence de correspondance explicite des valeurs via une instruction BY, la combinaison des données peut être incorrecte et ne pas refléter les relations attendues entre les observations.
Copié !
1DATA animalMissing;
2 INPUT common $ animal $;
3 DATALINES;
4a Ant
5c Cat
6d Dog
7e Eagle
8;
9DATA plantMissing2;
10 INPUT common $ plant $;
11 DATALINES;
12a Apple
13b Banana
14c Coconut
15e Eggplant
16f Fig
17;
18DATA merged;
19 MERGE animalMissing plantMissing2;
20RUN;
21PROC PRINT DATA=merged; RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Ne recourez au MERGE sans BY que si vous êtes absolument certain que vos deux tables sont des "miroirs" parfaits (même nombre de lignes, même ordre, aucune variable commune à part celle servant de lien théorique). Dans 99 % des cas, il est préférable d'utiliser une instruction BY pour garantir que la donnée "Ant" reste associée au "a" de manière logique et non accidentelle. »