Publicado el :
ETL SASHELP

Procesamiento de datos y exportación XML

Este código también está disponible en: Deutsch English Français
En espera de validación
El script comienza con una macro `%defaults` que inicializa la variable global `dset` a `sashelp.class` si aún no está definida. Luego, se utiliza un `DATA _NULL_` para abrir el conjunto de datos especificado por `&dset` y recuperar el número de observaciones (`nobs`), que luego se almacena en una variable macro global `nobs`. A continuación, se ejecuta una sección dedicada a XML. Utiliza la función `pathname(work)` para obtener la ruta del directorio de trabajo y luego define una biblioteca XML llamada `test` que apunta a un archivo `temp.xml` en este directorio. El contenido del conjunto de datos `&dset` se copia luego en esta biblioteca XML, generando así el archivo `temp.xml`. Después de liberar la libname `test`, el script lee el archivo `temp.xml` y muestra su contenido a través de `_webout`. Una parte del código para la generación de JSON está presente pero comentada. El script termina con las declaraciones `%STPBEGIN` y `%STPEND`, indicando que está diseñado para ejecutarse como un proceso almacenado de SAS©.
Análisis de datos

Type : SASHELP


El script utiliza el conjunto de datos `sashelp.class` por defecto. Este conjunto de datos es interno a SAS y siempre está disponible.

1 Bloque de código
MACRO
Explicación :
Este bloque define y llama a una macro `%defaults`. Esta macro verifica la existencia de la variable macro `dset`. Si `dset` no existe, la declara global y la inicializa con la ruta `sashelp.class`.
¡Copiado!
1%macro defaults ;
2 %* these defaults may be passed in, or ELSE they default ;
3 %IF %symexist(dset)=0 %THEN %DO;
4 %global dset;
5 %let dset=sashelp.class;
6 %END;
7%mend defaults;
8%defaults
2 Bloque de código
DATA STEP
Explicación :
Este `DATA _NULL_` paso a paso abre el conjunto de datos especificado por `&dset` (por defecto `sashelp.class`), recupera el número de observaciones (`nobs`) a través de la función `attrn` y lo almacena en una variable macro llamada `nobs` usando `call symput`.
¡Copiado!
1DATA _null_ ;
2 dsid=open("&dset");
3 nobs=attrn(dsid,'nobs');
4 call symput('nobs',strip(put(nobs,8.)));
5RUN;
3 Bloque de código
DATA STEP Data
Explicación :
Este bloque genera un archivo XML. Primero recupera la ruta del directorio de trabajo (`work`) y la almacena en la variable macro `pathname`. Luego, se asigna una libname `test` de tipo `xml` a un archivo `temp.xml` en este directorio. El contenido del conjunto de datos `&dset` se copia en `test.test`, creando así el archivo XML. La libname se libera a continuación. Finalmente, un `DATA _NULL_` lee el archivo `temp.xml` y muestra su contenido directamente a través de `_webout`.
¡Copiado!
1%let pathname=%sysfunc(pathname(work)) ;
2LIBNAME test xml "&pathname/temp.xml" ;
3DATA test.test ;
4 SET &dset ;
5RUN ;
6LIBNAME test ;
7DATA _null_ ;
8 INFILE "&pathname/temp.xml" ;
9 file _webout ;
10 INPUT ;
11 put _infile_ ;
12RUN ;
4 Bloque de código
MACRO
Explicación :
Estas líneas definen los delimitadores para un proceso almacenado de SAS. `%STPBEGIN` y `%STPEND` enmarcan el código que se ejecutará como parte del proceso almacenado. La línea `*';*\"*/;run;` es una sintaxis estándar para terminar potencialmente bloques de código o instrucciones pendientes, a menudo utilizada para asegurar una ejecución limpia en el contexto de los procesos almacenados.
¡Copiado!
1%let _result=streamfragment ;
2%STPBEGIN;
3*';*";*/;run;
4%STPEND;
5*';*";*/;RUN;
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.