Publié le :
Administration CREATION_INTERNE

Suppression d'un document de métadonnées

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
La macro `%mm_deletedocument` est conçue pour gérer la suppression d'objets 'Document' dans le système de métadonnées SAS©. Elle prend en entrée un paramètre `target` qui spécifie le chemin complet du document à supprimer. Avant toute tentative de suppression, elle procède à une vérification rigoureuse de l'existence et du type de l'objet via la fonction `metadata_pathobj`. Si l'objet n'est pas trouvé ou n'est pas reconnu comme un 'Document', la macro émet un avertissement et s'arrête prématurément pour éviter des opérations inutiles ou erronées. En cas de validation positive, la macro construit dynamiquement une requête XML (`<DeleteMetadata>`) ciblant l'URI du document à supprimer, et la soumet au serveur de métadonnées SAS© à l'aide de `proc metadata`. Après l'exécution de cette procédure, une seconde vérification est effectuée pour confirmer que le document a bien été retiré du référentiel. En cas d'échec de la suppression (le document étant toujours présent), un message d'erreur est logué et le code de retour système (`syscc`) est positionné à 4, signalant une opération non concluante.
Analyse des données

Type : CREATION_INTERNE


Le script n'utilise pas de sources de données externes ou de datasets SAS traditionnels. Il interagit directement avec le service de métadonnées SAS. Les informations nécessaires sont soit fournies en tant que paramètre macro (`target`), soit générées dynamiquement (XML de requête) au sein du script lui-même. Aucune donnée provenant de SASHELP ou d'autres sources non gérées n'est requise.

1 Bloc de code
Macro Définition
Explication :
Ce bloc définit la macro SAS `%mm_deletedocument`. Elle est conçue pour être appelée avec un paramètre `target`, qui est le chemin complet de l'objet 'Document' de métadonnées à supprimer.
Copié !
1%macro mm_deletedocument(
2target=
3)/*/STORE
4SOURCE*/;
5 
2 Bloc de code
DATA STEP
Explication :
Ce `DATA STEP _null_` initialise des variables locales (`type`, `uri`) et utilise la fonction `metadata_pathobj` pour interroger le référentiel de métadonnées afin de vérifier l'existence de l'objet spécifié par `&target` et d'en obtenir le type ('Note') et l'URI. Les informations récupérées sont stockées dans les macro-variables `type` et `stpuri`. Si l'objet n'est pas un 'Document' ou n'est pas trouvé, un message d'avertissement est émis et la macro se termine.
Copié !
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 Bloc de code
DATA STEP / PROC METADATA Data
Explication :
Ce bloc prépare des fichiers temporaires pour l'entrée (`__in`) et la sortie (`__out`) de la procédure `proc metadata`. Un `DATA STEP _null_` est utilisé pour générer un document XML de suppression de métadonnées, incluant l'URI du document à supprimer (`&stpuri`), et l'écrire dans le fichier `__in`. La `proc metadata` est ensuite invoquée avec ces fichiers pour soumettre la requête de suppression au serveur de métadonnées SAS.
Copié !
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 Bloc de code
DATA STEP
Explication :
Ce `DATA STEP _null_` lit et affiche le contenu du fichier `__out`, qui contient la réponse du serveur de métadonnées suite à l'opération de suppression. Cela permet de visualiser le statut de l'opération. Ensuite, les définitions des fileref `__in` et `__out` sont effacées.
Copié !
1/* list the result */
2DATA _null_;INFILE __out; INPUT; list; RUN;
3 
4filename __in clear;
5filename __out clear;
5 Bloc de code
DATA STEP
Explication :
Ce bloc effectue une vérification finale pour s'assurer que le document a bien été supprimé. La fonction `metadata_pathobj` est appelée à nouveau pour vérifier l'existence de l'objet à `&target`. Si le document est toujours présent (`&isgone = Document`), un message d'erreur est affiché, le code de retour système (`syscc`) est fixé à 4, et la macro se termine, indiquant que la suppression a échoué.
Copié !
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;
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.
Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La macro %mm_deletedocument illustre parfaitement les meilleures pratiques d'administration du SAS Metadata Server. Contrairement à une suppression manuelle via la console, l'utilisation programmatique de PROC METADATA permet une gestion industrielle et auditable des objets de type Document. Ce type d'objet est souvent utilisé dans l'architecture Open Metadata Architecture (OMA) pour stocker des descriptions, des liens vers des fichiers externes ou des informations textuelles critiques. »