Publié le :
Macro SASHELP

Macro pour créer des vues du dictionnaire SQL

Ce code est également disponible en : Deutsch English Español
En attente de validation
La macro `%mp_dictionary` permet de générer automatiquement un ensemble de vues SAS© basées sur les tables du dictionnaire SQL de SAS©. Elle prend un paramètre 'lib' pour spécifier le libref où les vues seront créées, avec 'WORK' comme valeur par défaut. Le processus commence par la création d'une vue nommée '&lib..dictionaries' à partir de 'dictionary.dictionaries'. Ensuite, elle extrait les noms des membres de cette vue dans une liste macro. Une boucle est utilisée pour parcourir cette liste et créer une vue distincte ('&lib..{viewName}') pour chaque entrée du dictionnaire SQL, permettant ainsi d'accéder facilement à des informations détaillées sur les tables, colonnes, index, etc., directement via des jeux de données SAS©.
Analyse des données

Type : SASHELP


Les données source utilisées par cette macro proviennent exclusivement des vues du dictionnaire SQL interne de SAS (`dictionary.dictionaries` et `dictionary.views`). Ces vues sont des tables système intégrées qui fournissent des métadonnées sur l'environnement SAS et ne nécessitent aucune source de données externe ou création de données explicite dans le script.

1 Bloc de code
PROC SQL Data
Explication :
Ce bloc de code définit la macro `%mp_dictionary`. Il utilise `PROC SQL` pour interagir avec le dictionnaire SAS. Premièrement, une vue temporaire nommée 'dictionaries' est créée dans la bibliothèque spécifiée (&lib) à partir de 'dictionary.dictionaries'. Cette vue contient une liste de toutes les vues disponibles dans le dictionnaire SQL. Ensuite, un `SELECT DISTINCT` est exécuté pour extraire les noms de ces vues dans une variable macro 'list'. Une boucle `%do` itère sur cette liste, et pour chaque nom de vue ('&mem'), une nouvelle vue est créée dans la bibliothèque spécifiée. Cela permet de transformer chaque vue du dictionnaire SQL en une vue accessible dans la bibliothèque SAS choisie.
Copié !
1%macro mp_dictionary(lib=WORK)/*/STORE SOURCE*/;
2 %local list i mem;
3 PROC SQL noprint;
4 create view &lib..dictionaries as select * from dictionary.dictionaries;
5 select distinct memname into: list separated BY ' ' from &lib..dictionaries;
6 %DO i=1 %to %sysfunc(countw(&list,%str( )));
7 %let mem=%scan(&list,&i,%str( ));
8 create view &lib..&mem as select * from dictionary.&mem;
9 %END;
10 QUIT;
11%mend mp_dictionary;
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.