Veröffentlicht am :
ETL MIXED

Verwaltung von Standortdaten und SAS-Dienstmakros

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Der gesamte Code besteht aus einem Hauptskript, das einen DATA Step mit `datalines4` verwendet, um Standortdaten in `work.Location` zu erstellen und diese dann über `PROC APPEND` an einen permanenten Datensatz `productn.Location` anzuhängen. Es enthält auch die Definition von zwei SAS©-Makros: `%macro_without_brief_tag`, ein einfaches Testmakro, das sein Argument anzeigt, und `%mm_getdetails`, ein komplexeres Makro zum Abfragen des SAS© Metadata Servers, um Attribute und Assoziationen eines bestimmten Metadatenobjekt-URI zu extrahieren.
Datenanalyse

Type : MIXED


Das Hauptskript erstellt Daten intern über `datalines4`. Das Makro `%mm_getdetails` interagiert mit dem SAS Metadata Server, um Systeminformationen (Metadaten) abzurufen. Das Makro `%macro_without_brief_tag` arbeitet mit intern übergebenen Argumenten und verarbeitet keine externen Daten.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA Step-Block erstellt den Datensatz `work.Location`. Er definiert die Attribute der Variablen (Länge, Format, Label) und liest die im `datalines4`-Abschnitt bereitgestellten Daten. `datalines4` ermöglicht die direkte Integration von Daten in das Skript, formatiert als CSV mit einem Komma als Trennzeichen. Das Format `DATETIME22.3` gibt an, dass das Datum als numerischer SAS-Wert gespeichert wird, der Datum und Uhrzeit mit Millisekundenpräzision darstellt.
Kopiert!
1DATA work.Location ;
2attrib
3LocationID LENGTH= 8 FORMAT=6. label="LocationID"
4Name LENGTH= $100 FORMAT=$100. label="Name"
5CostRate LENGTH= 8 FORMAT=12.4 label="CostRate"
6Availability LENGTH= 8 FORMAT=10.2 label="Availability"
7ModifiedDate LENGTH= 8 FORMAT=DATETIME22.3 label="ModifiedDate"
8;
9INFILE CARDS dsd delimiter=',';
10INPUT
11 LocationID
12 Name :$char.
13 CostRate
14 Availability
15 ModifiedDate
16;
17datalines4;
181,Tool Crib,0,0,1525132800
192,Sheet Metal Racks,0,0,1525132800
203,Paint Shop,0,0,1525132800
214,Paint Storage,0,0,1525132800
225,Metal Storage,0,0,1525132800
236,Miscellaneous Storage,0,0,1525132800
247,Finished Goods Storage,0,0,1525132800
2510,Frame Forming,22.5,96,1525132800
2620,Frame Welding,25,108,1525132800
2730,Debur and Polish,14.5,120,1525132800
2840,Paint,15.75,120,1525132800
2945,Specialized Paint,18,80,1525132800
3050,Subassembly,12.25,120,1525132800
3160,Final Assembly,12.25,120,1525132800
32;;;;
33RUN;
2 Codeblock
PROC APPEND
Erklärung :
`PROC APPEND` wird verwendet, um alle Beobachtungen des zuvor erstellten Datensatzes `work.Location` an das Ende des Datensatzes `productn.Location` anzuhängen. Dieses Verfahren ist effizient, um neue Zeilen zu einer vorhandenen Tabelle hinzuzufügen, ohne sie komplett neu erstellen zu müssen. Es wird angenommen, dass die Tabelle `productn.Location` existiert oder durch einen anderen Prozess erstellt wird.
Kopiert!
1 
2PROC APPEND base=productn.Location
3DATA=work.Location;
4RUN;
5 
3 Codeblock
MACRO macro_without_brief_tag
Erklärung :
Dieser Block definiert das SAS-Makro `%macro_without_brief_tag`. Es nimmt ein Argument `i_desc` entgegen und zeigt es direkt im SAS-Log über `%PUT` an. Dieses einfache Makro dient hauptsächlich zu Test-, Debugging-Zwecken oder zur Anzeige des Wertes einer Makrovariable.
Kopiert!
1%MACRO macro_without_brief_tag (i_desc);
2%put &i_desc.;
3%MEND macro_without_brief_tag;
4 
4 Codeblock
MACRO mm_getdetails Data
Erklärung :
Dieses Makro, `%mm_getdetails`, ist dazu konzipiert, detaillierte Informationen (Attribute und Assoziationen) eines SAS-Metadatenobjekt-URI zu extrahieren. Es nimmt einen URI als Eingabe und zwei optionale Ausgabedatensätze (`outattrs` und `outassocs`). Der erste DATA Step-Block durchläuft die Assoziationen des angegebenen URI unter Verwendung der Funktionen `metadata_getnasl` und `metadata_getnasn` und extrahiert dann die Namen über `metadata_getattr`, wobei diese Informationen in `&outassocs` gespeichert werden. Der zweite DATA Step-Block extrahiert die Eigenschaften und Attribute des URI unter Verwendung von `metadata_getnprp` und `metadata_getnatr` und speichert die Details in `&outattrs`. Jeder Datensatz wird anschließend von `PROC SORT` gemäß den bereitgestellten Optionen sortiert.
Kopiert!
1%macro mm_getdetails(uri
2 ,outattrs=work.attributes
3 ,outassocs=work.associations
4 ,sortoptions=
5)/*/STORE SOURCE*/;
6 
7DATA &outassocs;
8 keep assoc assocuri name;
9 LENGTH assoc assocuri name $256;
10 call missing(of _all_);
11 rc1=1;n1=1;
12 DO while(rc1>0);
13 /* Walk through all possible associations of this object. */
14 rc1=metadata_getnasl("&uri",n1,assoc);
15 rc2=1;n2=1;
16 DO while(rc2>0);
17 /* Walk through all the associations on this machine object. */
18 rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);
19 IF (rc2>0) THEN DO;
20 rc3=metadata_getattr(assocuri,"Name",name);
21 OUTPUT;
22 END;
23 call missing(name,assocuri);
24 n2+1;
25 END;
26 n1+1;
27 END;
28RUN;
29PROC SORT &sortoptions;
30 BY assoc name;
31RUN;
32 
33DATA &outattrs;
34 keep type name value;
35 LENGTH type $4 name $256 value $32767;
36 rc1=1;n1=1;type='Prop';name='';value='';
37 DO while(rc1>0);
38 rc1=metadata_getnprp("&uri",n1,name,value);
39 IF rc1>0 THEN OUTPUT;
40 n1+1;
41 END;
42 rc1=1;n1=1;type='Attr';
43 DO while(rc1>0);
44 rc1=metadata_getnatr("&uri",n1,name,value);
45 IF rc1>0 THEN OUTPUT;
46 n1+1;
47 END;
48RUN;
49PROC SORT &sortoptions;
50 BY type name;
51RUN;
52 
53%mend mm_getdetails;
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 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Diese Datei ist Teil von SASUnit, dem Unit-Test-Framework für SAS(R)-Programme. Informationen zu Copyright und Nutzungsbedingungen unter der GNU Lesser General Public License finden Sie in der beigefügten Datei README.md oder unter https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.