Publié le :

Mise à jour des associations de répertoires (Métadonnées SAS 9)

Attention : Ce code nécessite des droits administrateur.
Ce programme est un utilitaire conçu pour les environnements SAS© 9.x. Il permet de remapper l'association 'Répertoire' des objets fichiers d'un ancien URI vers un nouvel URI. Il est généralement utilisé après une migration ou une réorganisation des chemins. Le script établit une connexion au serveur de métadonnées et utilise les fonctions `metadata_resolve`, `metadata_getnasn` et `metadata_setassn` pour identifier et modifier les objets. NOTE : Ce code utilise des fonctions spécifiques au serveur de métadonnées SAS© 9 et n'est pas applicable tel quel dans une architecture SAS© Viya native.
Analyse des données

Type : EXTERNE


Interaction directe avec le référentiel du Serveur de Métadonnées SAS (OMR) pour lire et écrire des associations d'objets.

1 Bloc de code
OPTIONS
Explication :
Configuration des paramètres de connexion au Serveur de Métadonnées SAS 9 (hôte, port, identifiants, dépôt).
Copié !
1options
2 metaserver='meta.demo.sas.com'
3 metaport=8561
4 metauser='sasadm @saspw'
5 metapass='password'
6 metarepository='Foundation';
2 Bloc de code
DATA STEP
Explication :
Logique principale : vérification de l'existence des objets annuaires sources/cibles dans les métadonnées, récupération de leurs URIs, itération sur les fichiers associés à l'ancien répertoire et mise à jour de leur association parente vers le nouveau répertoire.
Copié !
1DATA _null_;
2 /* Set the old and new IDs. */
3 %let olddir = 'A5STBUB8.B6000002';
4 %let newdir = 'A5STBUB8.B6000002';
5 
6 /* Initialze variables. */
7 LENGTH type id old_uri new_uri file_uri $ 50;
8 call missing(of _character_);
9 
10 /* Confirm the directories exist */
11 rc=metadata_resolve("omsobj:Directory? @code_sas_json/downside_frequency_test.json = &olddir",type,id);
12 IF rc <= 0 THEN DO;
13 put "ERROR: Supplied old directory object ID not found in Metadata";
14 stop;
15 END;
16 
17 rc=metadata_resolve("omsobj:Directory? @code_sas_json/downside_frequency_test.json = &newdir",type,id);
18 IF rc <= 0 THEN DO;
19 put "ERROR: Supplied new directory object ID not found in Metadata";
20 stop;
21 END;
22 
23 /* Get URIs */
24 rc=metadata_getnobj("omsobj:Directory? @code_sas_json/downside_frequency_test.json = &olddir",1,old_uri);
25 rc=metadata_getnobj("omsobj:Directory? @code_sas_json/downside_frequency_test.json = &newdir",1,new_uri);
26 
27 /* Count files and update associations */
28 file_count=metadata_getnasn(old_uri,"Files",1,file_uri);
29 
30 IF file_count > 0 THEN DO i=1 to file_count;
31 file_count=metadata_getnasn(old_uri,"Files",i,file_uri);
32 rc=metadata_setassn(file_uri,"Directories","REPLACE",new_uri);
33 put _all_;
34 END;
35RUN;
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.
Informations de Copyright : Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Ce programme constitue un levier stratégique pour les administrateurs de plateformes SAS 9.4 confrontés à des réorganisations d'infrastructure ou des migrations de serveurs de fichiers. L'enjeu est ici la gouvernance des métadonnées : assurer que la couche logique SAS (les objets "Fichiers") reste correctement liée à la couche physique (les objets "Répertoires") après un changement d'URI.

Ce type d'utilitaire est le "scalpel" de l'administrateur. Étant donné que metadata_setassn effectue des modifications immédiates et définitives dans le référentiel Foundation, je recommande impérativement de réaliser une sauvegarde complète du serveur de métadonnées (Metadata Server Backup) avant toute exécution, car il n'existe pas d'option "Undo" native pour ces fonctions de bas niveau. »