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. metalib_1 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. metalib_2 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).   metalib_3 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).   metalib_4 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 :
proc metalib;
omr (library = "MYORACLE");
report;
run;
Voici un exemple de rapport : metalib_5 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 :   metalib_7 Et indique les modifications qui ont été effectuées : metalib_8 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éé : metalib_6    

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.