Publié le :
ETL CREATION_INTERNE

Analyse et fusion de données d'entreprise et financières

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par définir deux jeux de données temporaires, 'company' et 'finance', en utilisant des blocs 'datalines' pour l'entrée directe des données. Le jeu de données 'company' contient des informations démographiques sur les employés (Nom, Âge, Sexe), tandis que 'finance' contient des détails financiers (Numéro de téléphone, Nom, Salaire). Chaque jeu de données est trié par 'Name' à l'aide de PROC SORT, ce qui est une étape préparatoire essentielle pour la fusion. Les jeux de données triés sont ensuite imprimés. Le script fusionne ensuite 'company' et 'finance' en un nouveau jeu de données 'employeeinfo' basé sur la variable commune 'Name'. Des procédures PROC PRINT supplémentaires sont utilisées pour afficher le jeu de données fusionné, ainsi que pour démontrer l'utilisation des options globales 'firstobs' et 'obs', la clause 'WHERE' pour le filtrage, et une tentative de calcul de somme pour une variable catégorielle (qui est notée comme une potentielle erreur). Enfin, des PROC CONTENTS et PROC DATASETS sont utilisées pour examiner les métadonnées des jeux de données, notamment 'company'.
Analyse des données

Type : CREATION_INTERNE


Les données pour les jeux de données 'company' et 'finance' sont créées directement dans le script SAS via des blocs 'datalines'. Aucune donnée externe ou des bibliothèques SASHELP n'est utilisée comme source primaire de données pour ces jeux de données.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée le jeu de données 'company' en utilisant des données en ligne fournies dans le bloc 'datalines'. Il définit les variables 'Name' (caractère), 'Age' (numérique) et 'Gender' (caractère) avec leurs positions de colonne respectives. Ce jeu de données contient des informations de base sur les employés.
Copié !
1DATA company;
2INPUT
3Name $ 1-25
4Age 27-28
5Gender $ 30;
6 DATALINES;
7Vincent, Martina 34 F
8Phillipon, Marie-Odile 28 F
9Gunter, Thomas 27 M
10Harbinger, Nicholas 36 M
11Benito, Gisela 32 F
12Rudelich, Herbert 39 M
13Sirignano, Emily 12 F
14Morrison, Michael 32 M
15;
16 
2 Bloc de code
PROC SORT
Explication :
Cette PROC SORT trie le jeu de données 'company' par la variable 'Name'. Le tri est essentiel pour des opérations ultérieures comme la fusion ('MERGE') qui nécessitent généralement que les jeux de données d'entrée soient triés par les variables de fusion ('BY' variables).
Copié !
1PROC SORT DATA=company;
2 BY Name;
3RUN;
4 
3 Bloc de code
PROC PRINT
Explication :
Cette PROC PRINT affiche le contenu du jeu de données 'company' dans la fenêtre de sortie. Le 'title' spécifie le titre du rapport imprimé, le rendant plus descriptif.
Copié !
1PROC PRINT DATA=company;
2 title 'Company';
3RUN;
4 
4 Bloc de code
DATA STEP Data
Explication :
Ce second bloc DATA STEP crée le jeu de données 'finance', similaire au bloc 'company', en utilisant des 'datalines'. Il capture les variables 'Phone_number' (caractère), 'Name' (caractère) et 'Salary' (numérique), contenant des informations financières pour certains employés.
Copié !
1DATA finance;
2 INPUT Phone_number $ 1-11
3 Name $ 13-40
4 Salary;
5 DATALINES;
6074-53-9892 Vincent, Martina 35000
7776-84-5391 Phillipon, Marie-Odile 29750
8929-75-0218 Gunter, Thomas 27500
9446-93-2122 Harbinger, Nicholas 33900
10228-88-9649 Benito, Gisela 28000
11029-46-9261 Rudelich, Herbert 35000
12442-21-8075 Sirignano, Emily 5000
13;
14 
5 Bloc de code
PROC SORT
Explication :
Similaire au tri du jeu de données 'company', cette PROC SORT trie le jeu de données 'finance' par la variable 'Name' en préparation de l'opération de fusion.
Copié !
1PROC SORT DATA=finance;
2 BY Name;
3RUN;
4 
6 Bloc de code
PROC PRINT
Explication :
Cette PROC PRINT affiche le contenu du jeu de données 'finance' avec le titre 'Employee Information', fournissant une vue des données financières individuelles.
Copié !
1PROC PRINT DATA=finance;
2 title 'Employee Information';
3RUN;
4 
7 Bloc de code
DATA STEP Data
Explication :
Ce DATA STEP fusionne les jeux de données 'company' et 'finance' en un nouveau jeu de données appelé 'employeeinfo'. La clause 'BY name;' indique que la fusion doit être effectuée en faisant correspondre les observations sur la base de la variable 'Name'. Si un nom apparaît dans un jeu de données mais pas dans l'autre, les valeurs des variables non correspondantes seront manquantes. Les jeux de données d'entrée doivent être triés par la variable 'BY'.
Copié !
1DATA employeeinfo;
2 MERGE company finance;
3 BY name;
4RUN;
5 
8 Bloc de code
PROC PRINT
Explication :
Cette PROC PRINT affiche le jeu de données 'employeeinfo' qui est le résultat de la fusion. L'utilisation de 'title' et 'title2' permet de définir deux lignes de titre pour la sortie du rapport.
Copié !
1PROC PRINT DATA=employeeinfo;
2 title 'Laxmi is Cute!';
3 title2 'very cute';
4RUN;
5 
9 Bloc de code
PROC CONTENTS
Explication :
La PROC CONTENTS fournit des métadonnées détaillées sur le jeu de données 'company'. Cela inclut des informations telles que le nombre d'observations, le nombre de variables, les noms des variables, leurs types (numérique ou caractère), leurs longueurs et leurs formats.
Copié !
1PROC CONTENTS DATA = company;
2RUN;
3 
10 Bloc de code
PROC DATASETS
Explication :
La PROC DATASETS est une procédure de gestion de bibliothèque qui permet diverses opérations sur les jeux de données et les catalogues. Ici, l'instruction 'contents data= company;' est utilisée pour obtenir les mêmes métadonnées que PROC CONTENTS pour le jeu de données 'company'. Elle est souvent utilisée dans un contexte où plusieurs opérations de gestion de jeux de données sont effectuées au sein d'une seule exécution de PROC DATASETS.
Copié !
1PROC DATASETS;
2contents DATA= company;
3RUN;
4 
11 Bloc de code
OPTIONS et PROC PRINT
Explication :
Ce bloc démontre l'utilisation des options globales 'firstobs' et 'obs'. 'options firstobs=3;' indique à SAS de commencer à lire les données à partir de la troisième observation, et 'obs=9;' indique de s'arrêter après la neuvième observation. Par conséquent, cette PROC PRINT affichera les observations 3 à 9 (incluses) du jeu de données 'employeeinfo'. Ces options affectent toutes les étapes de données et procédures suivantes jusqu'à ce qu'elles soient réinitialisées ou modifiées.
Copié !
1options firstobs= 3 obs=9;
2PROC PRINT DATA = employeeinfo;
3RUN;
4 
12 Bloc de code
PROC PRINT
Explication :
Cette PROC PRINT utilise une clause 'WHERE' pour filtrer les observations du jeu de données 'employeeinfo'. Seules les observations où la variable 'Name' contient la sous-chaîne 'Vi' (insensible à la casse par défaut en SAS pour 'contains' sauf si l'option est changée) seront affichées. Cela permet de cibler des subsets de données spécifiques pour l'affichage.
Copié !
1PROC PRINT DATA = employeeinfo;
2where Name contains 'Vi';
3RUN;
4 
13 Bloc de code
PROC PRINT
Explication :
Cette PROC PRINT tente de générer un rapport avec des sous-totaux. L'instruction 'by Name;' regroupe les observations par nom, et 'sum Gender;' est destiné à calculer des totaux pour la variable 'Gender'. Cependant, 'Gender' est une variable de type caractère, et l'instruction 'SUM' dans PROC PRINT est conçue pour des variables numériques. Cela entraînera un avertissement ou une erreur dans le log SAS et la somme pour 'Gender' ne sera pas affichée. L'instruction 'ID Gender;' signifie que la variable 'Gender' sera utilisée comme variable d'identification dans le rapport, mais n'est pas typiquement utilisée dans ce contexte pour un groupement significatif avec 'BY' et 'SUM' sur une variable catégorielle.
Copié !
1PROC PRINT DATA = employeeinfo;
2title 'Sub total';
3sum Gender;
4BY Name;
5ID Gender;
6RUN;
7 
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.