BookmarkSubscribeRSS Feed
Tip Semanal 025: Detalles de los diccionarios SAS
Berenice25
SAS Employee

En el Tip 018 habíamos utilizado un 'Diccionario' de SAS:

el diccionario 'TABLES'. 
Pero al haber ingresado al mundo de los diccionarios surgen algunas preguntas, tales como: 
¿Existen otros diccionarios? 
Y, si la respuesta es afirmativa... 
¿Cuántos?
¿Qué información contienen? 
Esperamos poder contestar estas preguntas en este Tip. 
Lo haremos utilizando varios ejemplos. Desde ya, esperamos que les resulten interesantes.

 

/****************************************************************************/
/* Genera un reporte con información sobre todos los diccionarios 			*/
/* disponibles.			  													*/
/* Dicho reporte muestra el contenido de 'DICTIONARY.DICTIONARIES'  		*/
/* utilizando el procedimiento SQL.											*/
/* Posteriormente se presentan ejemplos de uso de otros diccionarios más	*/
/* específicos.																*/
/****************************************************************************/
/*-------------------*/
/* inicio del código */
/*-------------------*/



/*----------------------------------------------------------------------*/
/* Ejemplo 1:  															*/
/* Trabajamos con la lista de todos los diccionarios 					*/
/* Muestra cuáles son las columnas disponibles para cada diccionario	*/
/* y demás detalles 													*/
/*----------------------------------------------------------------------*/

proc sql;
	Title1 'Detalle de todos los diccionarios disponibles';
	Select * 
		from dictionary.dictionaries
	;
quit;

Title;



/*----------------------------------------------------------------------*/
/* Ejemplo 2:  															*/
/* Nos enfocamos en uno de los diccionarios: 'DICTIONARIES'				*/
/* Para eso utilizamos un filtro										*/
/*----------------------------------------------------------------------*/

/* Etapa 1: */
/* Muestra cuáles son las columnas disponibles en este diccionario e información general */
proc sql;
	Title1 'Columnas disponibles para el diccionario DICTIONARIES';
	Select *
		from dictionary.dictionaries
			where memname='DICTIONARIES'  /* el filtro */
	;
quit;

Title;

/* Etapa 2: */
/* Elegimos algunas de las columnas disponibles (en el orden que deseemos) y agregamos etiquetas */
proc sql;
	Title1 'Selección de 5 columnas del diccionario DICTIONARIES';
	Title2 'Columnas seleccionadas: Memname, Name, Label, Type y Length';
	Select 	
		memname Label='Pertenece a:', 
		name Label='Nombre', 
		label Label='Etiqueta', 
		type Label='Tipo', 
		length Label='Longitud'
	from dictionary.dictionaries
		where memname='DICTIONARIES'
	;
quit;

Title;



/*------------------------------------------------------*/
/* Ejemplo 3:  											*/
/* Cambiamos por otro de los diccionarios: 'MEMBERS'	*/
/*------------------------------------------------------*/

/* Información del diccionario: 'MEMBERS' */
/* El diccionario 'MEMBERS' muestra información del contenido de las librerías */
/* Por ejemplo, verán que la librería WORK incluye catálogos además de tablas de datos */
Proc sql;
	Title1 'Información del diccionario MEMBERS';
	Select *
		From DICTIONARY.members
	;
QUIT;

Title;


/*------------------------------------------------------*/
/* Ejemplo 4:  											*/
/* Cambiamos ahora por el diccionario: 'LIBNAMES'		*/
/*------------------------------------------------------*/

/* Etapa 1: */
/* Información del diccionario: 'LIBNAMES' */
/* El diccionario 'LIBNAMES' muestra las características (o la descripción) */
/* de las diferentes librerías */
/* Atención: NO muestra el contenido; las describe */
Proc sql;
	Title1 'Información que provee el diccionario LIBNAMES';
	Select *
		From DICTIONARY.libnames
	;
QUIT;

Title;

/* Etapa 2: */
/* El diccionario 'LIBNAMES' muestra 4 filas para cada librería (pueden ver esto en la */
/* columna 'Level') */
/* Vamos a filtrarlo para que muestre solamente la primera fila de cada una de ellas */
/* De esta forma tenemos -por ejemplo- las 'rutas' (paths) de las diferentes librerías */
Proc sql;
	Title1 'Selección de 7 columnas del diccionario LIBNAMES';
	Title2 'Columnas seleccionadas: Libname, Path,  Level,  Readonly, Sequential, Sysname y Temp';
	Select libname, path,  level,  readonly, sequential, sysname, temp
		From DICTIONARY.libnames
			where SYSNAME='Nombre archivo'
	;
QUIT;

Title; 


/*----------------*/
/* fin del código */
/*----------------*/




¡Epa! ¡Qué sorpresa la mía! 

Si has llegado hasta acá, seguramente vas a poder responder a estas 2 preguntas: 

1) ¿Existe alguna librería que tenga 'Acceso temporal'? 
2) ¿Existe alguna de las librerías predeterminadas (default) de SAS que contengan algo que no sean tablas (DATA) o catálogos (CATALOG)? 
Confío es tu sabiduría (fundamentalmente porque lograste ver 'la vera fine') 

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
Article Labels
Article Tags
Contributors