Synchroniser ses métadonnées avec la PROC METALIB
Si vous êtes un administrateur SAS vous connaissez sans aucun doute la proc metalib. En effet, cette procédure est l’outil indispensable pour gérer les méta-données associées à des tables.
L’utilisateur du moteur metadata pour vos bibliothèques (libname) permet à l’administrateur SAS de spécifier des droits pour les utilisateurs afin de contrôler les données auxquelles ils peuvent accéder. Aussi, la proc Metalib permet l’automatisation de la création et de la mise à jour de la définition des tables dans les méta-données en se basant sur l’information courante disponible dans les tables physiques.L’objectif est que la « vue » meta reflète la structure de la table distante.
Pour bien comprendre voici quelques cas usuels :
Pour toute table présente dans la bibliothèque physique et qui n’a pas de méta-donnée associée, la procédure METALIB ajoutera la définition de la table aux méta-données.
Pour toute table présente dans la bibliothèque physique et qui a des méta-données associées dans le référentiel, la procédure METALIB mettra à jour les méta-données (notamment les informations concernant les colonnes, les index, et les clefs).
Si une table est définie dans les méta-données, mais n’existe pas physiquement, la procédure METALIB pourra supprimer la table des méta-données (de façon optionnelle, il ne s’agit pas du comportement par défaut).
Notez que, par défaut, la procédure s’applique à toutes les tables définies dans la bibliothèque ; il est cependant possible de l’appliquer uniquement à certaines tables, ou bien d’exclure certaines tables.
Après la théorie, la pratique. Je vous propose quelques exemples d'utilisations et de mise en oeuvre :
Le code ci-dessous va, de façon automatique, mettre à jour les metadonnées (bibliothèque MYORACLE) en créant, pour chaque table physique présente dans le base Oracle, une table dans les metadonnées :
Voici un exemple de rapport :
Comme indiqué, 4 tables ont été trouvé dans la base Oracle. Coté, metadonnées, 2 tables ont été ajouté et 1 table mise à jour.
Si je modifie la structure d'une table dans Oracle, la proc metalib permet de mettre à jour les metadonnées.
Le rapport indique qu'une table à été mise à jour :
Et indique les modifications qui ont été effectuées :
Enfin, si, après exécution de la proc metalib, aucune table n'est mise à jour, c'est à dire que les metadonnées sont le "reflet" de la base Oracle, le rapport ci-dessous est créé :
1 2 3 4 |
proc metalib; omr (library = "MYORACLE"); report; run; |