Veröffentlicht am :
ETL CREATION_INTERNE

Beispiele: Datenvorbereitung

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die funktionale Analyse konzentriert sich auf die Identifizierung und Lösung von Herausforderungen bei der Zusammenführung von Datensätzen. Sie behandelt die Verwendung von PROC CONTENTS und PROC PRINT zur anfänglichen Datenprüfung, PROC SQL zur Erkennung gemeinsamer Variablen und DATA-Schritte mit Funktionen wie CATX und INPUT sowie den Anweisungen LENGTH und ATTRIB, um Variablenattribute zu vereinheitlichen. Die Beispiele zeigen, wie man mit Unterschieden in Variablentyp, -länge, -format und -beschriftung umgeht und wie man eindeutige Identifikatoren für doppelte BY-Werte erstellt, um korrekte Zusammenführungsoperationen zu gewährleisten. Die Beziehungen zwischen Datensätzen (eins-zu-viele, viele-zu-eins, eins-zu-eins) werden ebenfalls behandelt, wobei die Bedeutung einer angemessenen Vorbereitung für jede Kombinationsmethode hervorgehoben wird.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP sowie vordefinierte Datensätze wie Inventory, Sales, Sales2019, CarsSmall, Class und Classfit, die intern für Demonstrationszwecke erstellt wurden.

1 Codeblock
PROC CONTENTS / PROC SORT / PROC PRINT Data
Erklärung :
Zeigt deskriptive Informationen der Eingangsdatensätze an, um gemeinsame Variablen zu identifizieren und deren Attribute zu vergleichen. Sortiert die Datensätze nach der Variablen PartNumber. Druckt die Datensätze, um die Werte der gemeinsamen Variablen zu untersuchen und die Beziehung zwischen den Datensätzen zu bestimmen.
Kopiert!
1PROC CONTENTS DATA=Inventory; RUN;
2PROC CONTENTS DATA=Sales; RUN;
3PROC CONTENTS DATA=Sales2019; RUN;
4QUIT;
5PROC SORT DATA=inventory; BY PartNumber; RUN;
6PROC SORT DATA=Sales; BY PartNumber; RUN;
7PROC SORT DATA=Sales2019; BY PartNumber; RUN;
8 
9PROC PRINT DATA=inventory; RUN;
10PROC PRINT DATA=Sales; RUN;
11PROC PRINT DATA=Sales2019; RUN;
2 Codeblock
PROC SQL Data
Erklärung :
Erstellt eine temporäre Tabelle 'commonvars' aus den Spalten der Datensätze 'INVENTORY', 'SALES' und 'SALES2019' in der Bibliothek WORK. Wählt dann die Variablennamen aus, die allen diesen Datensätzen gemeinsam sind, indem nach Namen gruppiert und überprüft wird, ob die Anzahl der Anzahl der eindeutigen Datensätze entspricht.
Kopiert!
1PROC SQL;
2 title "Variables Common to Inventory, Sales, and Sales2019";
3 create TABLE commonvars as
4 select memname, upcase(name) as name
5 from dictionary.columns
6 where LIBNAME='WORK' and
7 memname in ('INVENTORY', 'SALES', 'SALES2019');
8 select name
9 from commonvars
10 group BY name
11 having count(*)=(select count(distinct(memname)) from commonvars);
12QUIT;
3 Codeblock
PROC SORT / PROC FREQ / DATA STEP Data
Erklärung :
Sortiert die Verkaufsdaten nach 'partNumber'. Verwendet PROC FREQ, um Duplikate von 'partNumber' zu identifizieren und speichert sie in 'SalesDupes'. Anschließend wird in einem DATA-Schritt ein neuer eindeutiger Identifikator 'uniqueID' erstellt, indem 'partNumber' mit der automatischen Beobachtungsnummer (_N_) mittels der CATX-Funktion für jeden Eintrag im Datensatz 'Sales' verkettet wird. Schließlich wird der neue Datensatz 'SalesUnique' mit der Variablen 'uniqueID' gedruckt.
Kopiert!
1PROC SORT DATA=sales;
2 BY partNumber;
3RUN;
4PROC PRINT DATA=sales; RUN;
5 
6PROC FREQ DATA = Sales noprint;
7 tables partNumber / out = SalesDupes
8 (keep = partNumber Count
9 where = (Count > 1));
10RUN;
11 
12PROC PRINT DATA=SalesDupes;RUN;
13 
14DATA SalesUnique;
15 SET Sales;
16 uniqueID = catx('.',partNumber,_n_);
17RUN;
18 
19PROC PRINT DATA=SalesUnique;
20 var uniqueID partNumber partName salesPerson;
21RUN;
4 Codeblock
DATA STEP / PROC CONTENTS / PROC MERGE Data
Erklärung :
Erstellt einen Datensatz 'cars' aus 'sashelp.cars'. Zeigt deskriptive Informationen der Datensätze 'cars' und 'CarsSmall' an. Versucht, 'cars' und 'CarsSmallNum' nach 'make' und 'model' zusammenzuführen, schlägt jedoch aufgrund inkompatibler Datentypen für die Variable 'Weight' fehl.

Zur Korrektur des Problems:
data CarsSmallNum;
set CarsSmall;
weightNum=input(weight, 8.);
drop weight;
rename WeightNum=weight;
run;

proc sort data=cars; by make model; run;
proc sort data=CarsSmallNum; by Make Model; run;

data combineCars;
merge cars CarsSmallNum;
by make model;
keep Make DriveTrain Model MakeModelDrive Weight;
run;
proc contents data=combineCars; run;
proc print data=combineCars; run;
Kopiert!
1DATA cars;
2 SET sashelp.cars;
3RUN;
4 
5PROC CONTENTS DATA=cars; RUN;
6PROC CONTENTS DATA=CarsSmall; RUN;
7 
8DATA combineCars;
9 MERGE cars CarsSmallNum;
10 BY make model;
11 keep Make DriveTrain Model MakeModelDrive Weight;
12RUN;
5 Codeblock
PROC PRINT / PROC MERGE / DATA STEP Data
Erklärung :
Druckt die Datensätze 'quarter1', 'quarter2', 'quarter3', 'quarter4'. Versucht, diese Datensätze nach 'Account' zusammenzuführen. Der erste Versuch kann aufgrund unterschiedlicher Längen für die Variable 'Mileage' eine Warnung erzeugen. Der zweite DATA-Schritt verwendet die LENGTH-Anweisung, um die Länge von 'Mileage' vor der Zusammenführung explizit auf 6 zu setzen, um eine konsistente Länge im Datensatz 'yearly' zu gewährleisten. PROC CONTENTS wird dann ausgeführt, um die Attribute des zusammengeführten Datensatzes zu überprüfen.
Kopiert!
1PROC PRINT DATA=quarter1; RUN;
2PROC PRINT DATA=quarter2; RUN;
3PROC PRINT DATA=quarter3; RUN;
4PROC PRINT DATA=quarter4; RUN;
5 
6DATA yearly;
7 MERGE quarter1 quarter2 quarter3 quarter4;
8 BY Account;
9RUN;
10 
11DATA yearly;
12 LENGTH Mileage 6;
13 MERGE quarter1 quarter2 quarter3 quarter4;
14 BY Account;
15RUN;
16PROC CONTENTS DATA=yearly; RUN;
6 Codeblock
PROC CONTENTS / PROC SORT / DATA STEP Data
Erklärung :
Zeigt deskriptive Informationen der Datensätze 'class' und 'classfit' an, um gemeinsame Variablen zu identifizieren und deren Attribute zu vergleichen, wobei der Schwerpunkt auf Format- und Beschriftungsunterschieden für 'Height' und 'Weight' liegt. Sortiert die Datensätze nach 'Name'. Führt 'class' und 'classfit' nach 'Name' zusammen. Verwendet die ATTRIB-Anweisung, um die Beschriftung von 'Weight' und das Format 'comma8.2' für 'Height', 'Weight' und 'Predict' explizit zu definieren. Druckt und zeigt die Attribute des resultierenden Datensatzes 'merged' an.
Kopiert!
1PROC CONTENTS DATA=class; RUN;
2PROC CONTENTS DATA=classfit; RUN;
3 
4PROC SORT DATA=class; BY name; RUN;
5PROC SORT DATA=classfit; BY name; RUN;
6 
7DATA merged;
8 MERGE class classfit; BY Name;
9 attrib Weight
10 label = "Weight";
11 attrib Height Weight Predict FORMAT=comma8.2;
12RUN;
13PROC PRINT DATA=merged;
14RUN;
15PROC CONTENTS DATA=merged; RUN;
7 Codeblock
DATA STEP Data
Erklärung :
Benennt die Variable 'Weight' in 'WeightLBS' im Datensatz 'vehicles' um, während er erstellt oder geändert wird. Dies geschieht, um Variablen zu unterscheiden, die denselben Namen haben, aber unterschiedliche Daten repräsentieren, und so Probleme beim Zusammenführen mit anderen Datensätzen zu vermeiden.
Kopiert!
1 
2DATA vehicles(rename=(weight=weightLBS));
3SET vehicles;
4RUN;
5 
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved