Publicado el :
ETL MIXTE

Gestión de datos de localización y macros utilitarias SAS

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
El conjunto del código consiste en un script principal que utiliza un DATA Step con `datalines4` para crear datos de localización en `work.Location`, luego los añade a un conjunto de datos permanente `productn.Location` a través de `PROC APPEND`. También contiene la definición de dos macros SAS©: `%macro_without_brief_tag`, una macro de prueba simple que muestra su argumento, y `%mm_getdetails`, una macro más compleja para consultar el servidor de metadatos SAS© para extraer los atributos y asociaciones de un URI de objeto de metadatos dado.
Análisis de datos

Type : MIXTE


El script principal crea datos internamente a través de `datalines4`. La macro `%mm_getdetails` interactúa con el servidor de metadatos SAS para recuperar información del sistema (metadatos). La macro `%macro_without_brief_tag` opera sobre argumentos pasados ​​internamente y no procesa datos externos.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA Step crea el conjunto de datos `work.Location`. Define los atributos de las variables (longitud, formato, etiqueta) y lee los datos proporcionados en la sección `datalines4`. `datalines4` permite integrar datos directamente en el script, formateados en CSV con un delimitador de coma. El formato `DATETIME22.3` indica que la fecha se almacena como un valor numérico SAS, representando la fecha y la hora con una precisión de milisegundos.
¡Copiado!
1DATA work.Location ;
2attrib
3LocationID LENGTH= 8 FORMAT=6. label="LocationID"
4Name LENGTH= $100 FORMAT=$100. label="Name"
5CostRate LENGTH= 8 FORMAT=12.4 label="CostRate"
6Availability LENGTH= 8 FORMAT=10.2 label="Availability"
7ModifiedDate LENGTH= 8 FORMAT=DATETIME22.3 label="ModifiedDate"
8;
9INFILE CARDS dsd delimiter=',';
10INPUT
11 LocationID
12 Name :$char.
13 CostRate
14 Availability
15 ModifiedDate
16;
17datalines4;
181,Tool Crib,0,0,1525132800
192,Sheet Metal Racks,0,0,1525132800
203,Paint Shop,0,0,1525132800
214,Paint Storage,0,0,1525132800
225,Metal Storage,0,0,1525132800
236,Miscellaneous Storage,0,0,1525132800
247,Finished Goods Storage,0,0,1525132800
2510,Frame Forming,22.5,96,1525132800
2620,Frame Welding,25,108,1525132800
2730,Debur and Polish,14.5,120,1525132800
2840,Paint,15.75,120,1525132800
2945,Specialized Paint,18,80,1525132800
3050,Subassembly,12.25,120,1525132800
3160,Final Assembly,12.25,120,1525132800
32;;;;
33RUN;
2 Bloque de código
PROC APPEND
Explicación :
`PROC APPEND` se utiliza para añadir todas las observaciones del conjunto de datos `work.Location` (creado previamente) al final del conjunto de datos `productn.Location`. Este procedimiento es eficiente para añadir nuevas filas a una tabla existente sin tener que recrearla por completo. Se asume que la tabla `productn.Location` existe o es creada por otro proceso.
¡Copiado!
1 
2PROC APPEND base=productn.Location
3DATA=work.Location;
4RUN;
5 
3 Bloque de código
MACRO macro_without_brief_tag
Explicación :
Este bloque define la macro SAS `%macro_without_brief_tag`. Toma un argumento `i_desc` y lo muestra directamente en el log SAS a través de `%PUT`. Esta macro simple está destinada principalmente para fines de prueba, depuración o para mostrar el valor de una macro-variable.
¡Copiado!
1%MACRO macro_without_brief_tag (i_desc);
2%put &i_desc.;
3%MEND macro_without_brief_tag;
4 
4 Bloque de código
MACRO mm_getdetails Data
Explicación :
Esta macro, `%mm_getdetails`, está diseñada para extraer información detallada (atributos y asociaciones) de un URI de objeto de metadatos SAS. Toma un URI como entrada y dos conjuntos de datos de salida opcionales (`outattrs` y `outassocs`). El primer bloque DATA Step recorre las asociaciones del URI especificado utilizando las funciones `metadata_getnasl` y `metadata_getnasn`, luego extrae los nombres a través de `metadata_getattr`, almacenando esta información en `&outassocs`. El segundo bloque DATA Step extrae las propiedades y atributos del URI utilizando `metadata_getnprp` y `metadata_getnatr`, almacenando los detalles en `&outattrs`. Cada conjunto de datos se ordena luego con `PROC SORT` según las opciones proporcionadas.
¡Copiado!
1%macro mm_getdetails(uri
2 ,outattrs=work.attributes
3 ,outassocs=work.associations
4 ,sortoptions=
5)/*/STORE SOURCE*/;
6 
7DATA &outassocs;
8 keep assoc assocuri name;
9 LENGTH assoc assocuri name $256;
10 call missing(of _all_);
11 rc1=1;n1=1;
12 DO while(rc1>0);
13 /* Walk through all possible associations of this object. */
14 rc1=metadata_getnasl("&uri",n1,assoc);
15 rc2=1;n2=1;
16 DO while(rc2>0);
17 /* Walk through all the associations on this machine object. */
18 rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);
19 IF (rc2>0) THEN DO;
20 rc3=metadata_getattr(assocuri,"Name",name);
21 OUTPUT;
22 END;
23 call missing(name,assocuri);
24 n2+1;
25 END;
26 n1+1;
27 END;
28RUN;
29PROC SORT &sortoptions;
30 BY assoc name;
31RUN;
32 
33DATA &outattrs;
34 keep type name value;
35 LENGTH type $4 name $256 value $32767;
36 rc1=1;n1=1;type='Prop';name='';value='';
37 DO while(rc1>0);
38 rc1=metadata_getnprp("&uri",n1,name,value);
39 IF rc1>0 THEN OUTPUT;
40 n1+1;
41 END;
42 rc1=1;n1=1;type='Attr';
43 DO while(rc1>0);
44 rc1=metadata_getnatr("&uri",n1,name,value);
45 IF rc1>0 THEN OUTPUT;
46 n1+1;
47 END;
48RUN;
49PROC SORT &sortoptions;
50 BY type name;
51RUN;
52 
53%mend mm_getdetails;
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.
Información de copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Este archivo forma parte de SASUnit, el framework de prueba unitaria para programas SAS(R). Para obtener información de derechos de autor y términos de uso bajo la Licencia Pública General Menor de GNU, consulte el archivo README.md incluido o https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.