Die Daten stammen nicht aus SAS-Tabellen, sondern werden direkt vom SAS-Metadatenserver gelesen. Die Verbindung wird über die Optionen 'metaserver', 'metaport' usw. hergestellt. Das Skript fragt die Metadaten-API ab, um spezifische Objekte zu finden.
1 Codeblock
DATA STEP
Erklärung : Dieser DATA _NULL_-Block ist das Herzstück des Programms. Er erstellt keine SAS-Ausgabetabellen. Er initialisiert Variablen, behält den Wert des Makros 'MODE' bei und erstellt dann eine Metadatenabfrage. Er verwendet die Funktion `metadata_resolve`, um die Anzahl der 'ForeignKey'-Objekte zu zählen, die der Abfrage entsprechen. Wenn er welche findet, durchläuft er jedes Objekt, ruft dessen URI, Namen, ID und die zugehörigen Tabelleninformationen über `metadata_getnobj`, `metadata_getattr` und `metadata_getnasn` ab. Schließlich werden die Informationen im SAS-Protokoll angezeigt, und wenn der Modus 'DELETE' ist, versucht er, das Objekt mit `metadata_delobj` zu löschen, wobei der Rückgabecode des Vorgangs überprüft wird.
Kopiert!
data _null_;
/* Initialize variables. */
length FK_id PT_id $17 type FK_uri PT_uri $50 PT_engine $64 PT_name $32 FK_name $60;
call missing ( of _character_ );
retain mode "&MODE";
/* Define a query for ForeignKey FKobjects that do not have a PartnerUniqueKey association */
FK_obj="omsobj:ForeignKey?ForeignKey[not(PartnerUniqueKey/*)]";
/* Determine how many foreign key objects meet the criteria */
FK_Count=metadata_resolve(FK_obj,type,FK_id);
put "NOTE: Found " FK_Count "ForeignKey objects that do not have an associated PartnerUniqueKey";
/* If any were found, iterate through each one to get the attributes and associations */
if FK_Count > 0 then do i = 1 to FK_Count;
/* Get the URI for the nth ForeignKey found */
FK_rc=metadata_getnobj(FK_obj,i,FK_uri);
/* Get the name and ID of the ForeignKey FKobject */
FK_rc=metadata_getattr(FK_uri,"Name",FK_name);
FK_rc=metadata_getattr(FK_uri,"Id",FK_id);
/* get the table name and id this ForeignKey is associated with */
PT_rc=metadata_getnasn(FK_uri,"Table",1,PT_uri);
if PT_rc > 0 then do;
/* Get the name and ID of the table. */
PT_rc=metadata_getattr(PT_uri,"SASTableName",PT_name);
PT_rc=metadata_getattr(PT_uri,"Id",PT_id);
end;
/* REPORT and DELETE */
put "NOTE: Found foreign key: " FK_name "with id: " FK_id "for table: " PT_name "with id: " PT_id;
if mode = "DELETE" then do;
FK_rc = metadata_delobj(FK_uri);
if FK_rc then put 'ERROR: metadata_delobj failed with return code ' FK_rc;
else put 'NOTE: Foreign key successfully deleted';
end;
end;
run;
put "NOTE: Found foreign key: " FK_name "with id: " FK_id "for table: " PT_name "with id: " PT_id;
33
IF mode = "DELETE"THENDO;
34
FK_rc = metadata_delobj(FK_uri);
35
IF FK_rc THEN put 'ERROR: metadata_delobj failed with return code ' FK_rc;
36
ELSE put 'NOTE: Foreign key successfully deleted';
37
END;
38
END;
39
RUN;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.