Publicado el :

Creación de una carpeta de metadatos

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
La macro `mmx_createmetafolder` toma como parámetros la ubicación de la carpeta (`loc`), el nombre de usuario (`user`) y la contraseña (`pass`) para conectarse al servidor de metadatos. Recupera la información de conexión (host y puerto) de las opciones del sistema SAS© (`metaserver`, `metaport`). Se construye una ruta a una herramienta externa (`sas©-make-folder`). La macro luego ejecuta este comando externo a través de una instrucción `DATA _NULL_` con la opción `pipe` para crear la carpeta de metadatos utilizando la información de conexión y la ruta especificada. Después del intento de creación, utiliza la función `metadata_pathobj` para verificar si la carpeta se ha creado correctamente. Si la carpeta no existe, se llama a la macro `mp_abort` para detener la ejecución y señalar un error.
Análisis de datos

Type : EXTERNE


El script interactúa con el servidor de metadatos de SAS para la creación y verificación de la carpeta. Utiliza las opciones del sistema `metaserver` y `metaport` para la conexión. Además, ejecuta un comando de sistema externo (`sas-make-folder`) a través de la instrucción `pipe`, lo que implica una interacción con el entorno operativo subyacente. No procesa archivos de datos externos tradicionales (CSV, Excel, etc.) que no serían gestionados por el propio script o las bibliotecas SASHELP.

1 Bloque de código
MACRO CALL / DATA STEP
Explicación :
Este bloque inicializa macro-variables locales (`host`, `port`, `path`, `connx_string`, `msg`). Recupera el host y el puerto del servidor de metadatos de SAS a través de la función `getoption`. Luego construye la cadena de conexión (`connx_string`) incluyendo las credenciales proporcionadas, y una ruta (`path`) a una herramienta externa `sas-make-folder` (la macro `%mf_loc` es una dependencia externa). Se utiliza un paso `DATA _NULL_` con la instrucción `infile ... pipe` para ejecutar el comando externo `sas-make-folder` con los parámetros definidos, con el fin de crear la carpeta de metadatos. La salida del comando se dirige al log de SAS a través de `putlog _infile_`.
¡Copiado!
1%local host port path connx_string msg;
2%let host=%sysfunc(getoption(metaserver));
3%let port=%sysfunc(getoption(metaport));
4%let path=%mf_loc(POF)/tools;
5 
6%let connx_string= -host &host -port &port -user '&user' -password '&pass';
7/* remove directory */
8DATA _null_;
9 INFILE " &path/sas-make-folder &connx_string ""&loc"" 2>&1"
10 pipe lrecl=10000;
11 INPUT;
12 putlog _infile_;
13RUN;
2 Bloque de código
DATA STEP / MACRO CALL
¡Copiado!
1DATA _null_; /* check tree exists */
2 LENGTH type uri $256;
3 rc=metadata_pathobj("","&loc","Folder",type,uri);
4 call symputx('foldertype',type,'l');
5RUN;
6%let msg=Location (&loc) was not created!!;
7%mp_abort(iftrue= (&foldertype ne Tree)
8 ,mac=&_program..sas
9 ,msg=%superq(msg)
10)
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 : El código hace referencia a varias fuentes de derechos de autor: 'Allan Bowe' (autor mencionado en el bloque de ayuda del archivo principal), 'Copyright (c) 2001-2006 Rodney Sparapani' (bajo licencia GNU GPL, proveniente de _version.sas), 'Copyright 2010-2023 HMS Analytical Software GmbH' (proveniente de macro_without_brief_tag.sas), y 'Copyright © 2022, SAS Institute Inc.' (proveniente de print_macro_parameters.sas y de la documentación HTML).