Veröffentlicht am :
Verwaltung CREATION_INTERNE

Löschen eines Metadaten-Dokuments

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Makro `%mm_deletedocument` wurde entwickelt, um das Löschen von 'Dokument'-Objekten im SAS©-Metadaten-System zu verwalten. Es nimmt einen `target`-Parameter als Eingabe, der den vollständigen Pfad des zu löschenden Dokuments angibt. Vor jedem Löschversuch wird die Existenz und der Typ des Objekts mittels der Funktion `metadata_pathobj` streng überprüft. Wird das Objekt nicht gefunden oder nicht als 'Dokument' erkannt, gibt das Makro eine Warnung aus und bricht frühzeitig ab, um unnötige oder fehlerhafte Operationen zu vermeiden. Bei positiver Validierung erstellt das Makro dynamisch eine XML-Anfrage (`<DeleteMetadata>`), die den URI des zu löschenden Dokuments adressiert, und sendet diese mithilfe von `proc metadata` an den SAS©-Metadatenserver. Nach Ausführung dieses Verfahrens wird eine zweite Überprüfung durchgeführt, um zu bestätigen, dass das Dokument erfolgreich aus dem Repository entfernt wurde. Im Falle eines Fehlers beim Löschen (das Dokument ist immer noch vorhanden) wird eine Fehlermeldung protokolliert und der Systemrückgabecode (`syscc`) auf 4 gesetzt, was eine nicht erfolgreiche Operation anzeigt.
Datenanalyse

Type : CREATION_INTERNE


Das Skript verwendet keine externen Datenquellen oder traditionellen SAS-Datasets. Es interagiert direkt mit dem SAS-Metadatendienst. Die benötigten Informationen werden entweder als Makroparameter (`target`) bereitgestellt oder dynamisch (XML-Anfrage) innerhalb des Skripts selbst generiert. Es sind keine Daten von SASHELP oder anderen nicht verwalteten Quellen erforderlich.

1 Codeblock
Macro Définition
Erklärung :
Dieser Block definiert das SAS-Makro `%mm_deletedocument`. Es ist dafür vorgesehen, mit einem `target`-Parameter aufgerufen zu werden, der den vollständigen Pfad des zu löschenden Metadaten-Dokumentobjekts angibt.
Kopiert!
1%macro mm_deletedocument(
2target=
3)/*/STORE
4SOURCE*/;
5 
2 Codeblock
DATA STEP
Erklärung :
Dieser `DATA STEP _null_` initialisiert lokale Variablen (`type`, `uri`) und verwendet die Funktion `metadata_pathobj`, um das Metadaten-Repository abzufragen, um die Existenz des durch `&target` angegebenen Objekts zu überprüfen und dessen Typ ('Note') und URI zu erhalten. Die abgerufenen Informationen werden in den Makrovariablen `type` und `stpuri` gespeichert. Wenn das Objekt kein 'Dokument' ist oder nicht gefunden wird, wird eine Warnmeldung ausgegeben und das Makro beendet.
Kopiert!
1/**
2 * Check document exist
3 */
4%local type;
5DATA _null_;
6 LENGTH type uri $256;
7 rc=metadata_pathobj("","&target",'Note',type,uri);
8 call symputx('type',type,'l');
9 call symputx('stpuri',uri,'l');
10RUN;
11%IF &type ne Document %THEN %DO;
12 %put %str(WARN)ING: No Document found at ⌖
13 %return;
14%END;
3 Codeblock
DATA STEP / PROC METADATA Data
Erklärung :
Dieser Block bereitet temporäre Dateien für die Eingabe (`__in`) und Ausgabe (`__out`) der `proc metadata`-Prozedur vor. Ein `DATA STEP _null_` wird verwendet, um ein XML-Dokument zur Metadatenlöschung zu generieren, das den URI des zu löschenden Dokuments (`&stpuri`) enthält, und es in die Datei `__in` zu schreiben. Die `proc metadata` wird dann mit diesen Dateien aufgerufen, um die Löschungsanfrage an den SAS-Metadatenserver zu übermitteln.
Kopiert!
1filename __in temp lrecl=10000;
2filename __out temp lrecl=10000;
3DATA _null_ ;
4 file __in ;
5 put "<DeleteMetadata><Metadata><Document Id='&stpuri'/>";
6 put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
7 put "</DeleteMetadata>";
8RUN ;
9PROC METADATA in=__in out=__out verbose;RUN;
4 Codeblock
DATA STEP
Erklärung :
Dieser `DATA STEP _null_` liest und zeigt den Inhalt der Datei `__out` an, die die Antwort des Metadatenservers nach dem Löschvorgang enthält. Dies ermöglicht die Visualisierung des Operationsstatus. Anschließend werden die Definitionen der Filerefs `__in` und `__out` gelöscht.
Kopiert!
1/* list the result */
2DATA _null_;INFILE __out; INPUT; list; RUN;
3 
4filename __in clear;
5filename __out clear;
5 Codeblock
DATA STEP
Erklärung :
Dieser Block führt eine abschließende Überprüfung durch, um sicherzustellen, dass das Dokument erfolgreich gelöscht wurde. Die Funktion `metadata_pathobj` wird erneut aufgerufen, um die Existenz des Objekts unter `&target` zu überprüfen. Wenn das Dokument immer noch vorhanden ist (`&isgone = Document`), wird eine Fehlermeldung angezeigt, der Systemrückgabecode (`syscc`) auf 4 gesetzt, und das Makro beendet, was darauf hinweist, dass das Löschen fehlgeschlagen ist.
Kopiert!
1/**
2 * Check deletion
3 */
4%local isgone;
5DATA _null_;
6 LENGTH type uri $256;
7 call missing (of _all_);
8 rc=metadata_pathobj("","&target",'Note',type,uri);
9 call symputx('isgone',type,'l');
10RUN;
11%IF &isgone = Document %THEN %DO;
12 %put %str(ERR)OR: Document not deleted from ⌖
13 %let syscc=4;
14 %return;
15%END;
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.