Publicado el :
Macro SASHELP

Macro para crear vistas del diccionario SQL

Este código también está disponible en: Deutsch English Français
En espera de validación
La macro `%mp_dictionary` permite generar automáticamente un conjunto de vistas SAS© basadas en las tablas del diccionario SQL de SAS©. Toma un parámetro 'lib' para especificar el libref donde se crearán las vistas, con 'WORK' como valor predeterminado. El proceso comienza con la creación de una vista llamada '&lib..dictionaries' a partir de 'dictionary.dictionaries'. Luego, extrae los nombres de los miembros de esta vista en una lista de macros. Se utiliza un bucle para recorrer esta lista y crear una vista distinta ('&lib..{viewName}') para cada entrada del diccionario SQL, permitiendo así acceder fácilmente a información detallada sobre tablas, columnas, índices, etc., directamente a través de conjuntos de datos SAS©.
Análisis de datos

Type : SASHELP


Los datos de origen utilizados por esta macro provienen exclusivamente de las vistas del diccionario SQL interno de SAS (`dictionary.dictionaries` y `dictionary.views`). Estas vistas son tablas de sistema integradas que proporcionan metadatos sobre el entorno SAS y no requieren ninguna fuente de datos externa o creación explícita de datos en el script.

1 Bloque de código
PROC SQL Data
Explicación :
Este bloque de código define la macro `%mp_dictionary`. Utiliza `PROC SQL` para interactuar con el diccionario SAS. Primero, se crea una vista temporal llamada 'dictionaries' en la biblioteca especificada (&lib) a partir de 'dictionary.dictionaries'. Esta vista contiene una lista de todas las vistas disponibles en el diccionario SQL. Luego, se ejecuta un `SELECT DISTINCT` para extraer los nombres de estas vistas en una variable macro 'list'. Un bucle `%do` itera sobre esta lista, y para cada nombre de vista ('&mem'), se crea una nueva vista en la biblioteca especificada. Esto permite transformar cada vista del diccionario SQL en una vista accesible en la biblioteca SAS elegida.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.