lunes, 28 de julio de 2014

Trabajando con el diccionario/metadata de SAS

En un post anterior vimos la utilidad de las tablas del diccionario de SAS. A continuación incluímos una sencilla macro que puede ser de utilidad para hacer búsquedas en la metadata.



A menudo, nos encontramos con el problema de conocer qué tablas contienen determinado campo. La siguiente macro resuelve este problema de forma rápida, por si no disponemos en nuestra interfaz de desarrollo de una utilidad equivalente.

%macro tabla_columnas(tabla_resultado, lib_busqueda, columna_busqueda);
 /*
 tabla_resultado: tabla en la que guarda la salida de la búsqueda
 lib_busqueda: librería sobre la que realiza la búsqueda
 columna_busqueda: columna que estamos buscando
 */

 proc sql;

 create table &tabla_resultado as
 (SELECT distinct libname as libreria, memname as tabla
 FROM dictionary.columns WHERE upcase(libname)= upcase("&lib_busqueda")
 AND memtype = 'DATA' and upcase(name)=upcase("&columna_busqueda") );
 quit;


%mend tabla_columnas;


%let lib = work;
proc print data=res;


%let col = cod_periodo;
%tabla_columnas(res,work,cod_periodo);


proc print;
title 'Tablas de la librería: ' &lib. ' que tienen la columna: ' &col. ;
run;


No hay comentarios:

Publicar un comentario