Publicado el :
Calidad de los Datos CREATION_INTERNE

Procedimiento DMSRVDATASVC: Envío de datos a un servicio y salida a un conjunto de datos

Este código también está disponible en: Deutsch English Français
En espera de validación
El procedimiento DMSRVDATASVC permite interactuar con los servicios de gestión de datos de DataFlux. Facilita el envío de datos SAS© de entrada a un servicio externo DataFlux y la recepción de los resultados del servicio en forma de conjunto de datos SAS©. Este procedimiento es esencial para integrar las capacidades de calidad y gestión de datos de DataFlux directamente en los flujos de trabajo de SAS© Viya. Las opciones clave incluyen la especificación del host, el puerto, el nombre del servicio, los conjuntos de datos de entrada y salida, el tiempo de espera (TIMEOUT) y la información de autenticación (USERID, PASSWORD) para asegurar el acceso al servicio.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP.

1 Bloque de código
PROC DMSRVDATASVC Data
Explicación :
Este ejemplo ilustra el uso más simple del procedimiento DMSRVDATASVC para enviar un conjunto de datos SAS (`dqsio.dfsample`) a un servicio DataFlux ('analyse_de_donnees.ddf') y almacenar la respuesta en un nuevo conjunto de datos SAS (`work.outsrv1_basic`). Incluye los parámetros esenciales como el host, el puerto, el nombre del servicio, así como la autenticación y un tiempo de espera. Los datos de entrada se crean utilizando un paso DATA con `datalines` para asegurar la autonomía del ejemplo.
¡Copiado!
1/* Préparation des données d'entrée */
2LIBNAME dqsio "%sysfunc(pathname(WORK))";
3 
4DATA dqsio.dfsample;
5 LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
6 INPUT ID $ Nom $ Prenom $ Ville $;
7 DATALINES;
8001 Dupont Jean Paris
9002 Martin Sylvie Lyon
10003 Durand Pierre Marseille
11004 Petit Claire Bordeaux
12005 LeGrand Michel Toulouse
13;
14RUN;
15 
16/* Envoi des données d'entrée à un service DataFlux et réception de la sortie */
17PROC DMSRVDATASVC
18 HOST='http://localhost' /* Hôte du DataFlux Data Management Server */
19 PORT=21036 /* Port du service */
20 SERVICE='analyse_de_donnees.ddf' /* Nom du service DataFlux */
21 DATA=dqsio.dfsample /* Jeu de données SAS en entrée */
22 OUT=work.outsrv1_basic /* Jeu de données SAS de sortie */
23 TIMEOUT=36 /* Délai d'attente du service en secondes */
24 USERID='utilisateur_test'/* Identifiant de l'utilisateur du service */
25 PASSWORD='motdepasse_test';/* Mot de passe de l'utilisateur du service */
26RUN;
27 
28/* Affichage des premières lignes du jeu de données de sortie */
29PROC PRINT DATA=work.outsrv1_basic(OBS=5);
30TITLE "Sortie Basique du Service DataFlux";
31RUN;
2 Bloque de código
PROC DMSRVDATASVC Data
Explicación :
Este ejemplo intermedio muestra cómo utilizar opciones adicionales para una mejor trazabilidad y un control del tiempo de ejecución. La opción `TIMEOUT` se aumenta a 120 segundos. Las opciones `LOGFILE` y `STATUSFILE` se utilizan para registrar la información detallada de la ejecución del servicio y su estado, lo cual es crucial para la depuración y el monitoreo. El contenido de estos archivos se muestra a continuación utilizando pasos DATA simples, simulando su consulta.
¡Copiado!
1/* Préparation des données d'entrée (identique à l'exemple 1) */
2LIBNAME dqsio "%sysfunc(pathname(WORK))";
3 
4DATA dqsio.dfsample;
5 LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
6 INPUT ID $ Nom $ Prenom $ Ville $;
7 DATALINES;
8001 Dupont Jean Paris
9002 Martin Sylvie Lyon
10003 Durand Pierre Marseille
11004 Petit Claire Bordeaux
12005 LeGrand Michel Toulouse
13;
14RUN;
15 
16/* Envoi des données d'entrée avec gestion des logs et un timeout plus long */
17PROC DMSRVDATASVC
18 HOST='http://localhost'
19 PORT=21036
20 SERVICE='validation_adresse.ddf' /* Autre service, par exemple */
21 DATA=dqsio.dfsample
22 OUT=work.outsrv2_log
23 TIMEOUT=120 /* Délai d'attente étendu */
24 LOGFILE="/tmp/dmsrv_log.txt" /* Spécifie un fichier de log pour le service */
25 STATUSFILE="/tmp/dmsrv_status.txt" /* Fichier pour le statut d'exécution */
26 USERID='utilisateur_test'
27 PASSWORD='motdepasse_test';
28RUN;
29 
30/* Affichage des premières lignes du jeu de données de sortie */
31PROC PRINT DATA=work.outsrv2_log(OBS=5);
32TITLE "Sortie avec Fichiers de Log et Statut";
33RUN;
34 
35/* Affichage du contenu du fichier de log (si créé) */
36FILENAME mylog "/tmp/dmsrv_log.txt";
37DATA _NULL_;
38 INFILE mylog;
39 INPUT;
40 PUT _INFILE_;
41RUN;
42 
43/* Affichage du contenu du fichier de statut (si créé) */
44FILENAME mystatus "/tmp/dmsrv_status.txt";
45DATA _NULL_;
46 INFILE mystatus;
47 INPUT;
48 PUT _INFILE_;
49RUN;
3 Bloque de código
PROC DMSRVDATASVC / DATA STEP Data
Explicación :
Este ejemplo avanzado demuestra una cadena de procesamiento que involucra múltiples llamadas al servicio DataFlux, utilizando macrovariables para mayor flexibilidad. La primera llamada (`SERVICE_1`) normaliza los nombres, y su salida (`work.outsrv3_normalized`) se utiliza luego como entrada para un segundo servicio (`SERVICE_2`) que enriquece los códigos postales. El uso de macrovariables permite parametrizar fácilmente los detalles de conexión y los nombres de servicio, lo cual es útil en entornos de producción o para pruebas automatizadas.
¡Copiado!
1/* Préparation des données d'entrée (un sous-ensemble pour l'exemple) */
2LIBNAME dqsio "%sysfunc(pathname(WORK))";
3 
4DATA dqsio.dfsample;
5 LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
6 INPUT ID $ Nom $ Prenom $ Ville $;
7 DATALINES;
8001 Dupont Jean Paris
9003 Durand Pierre Marseille
10005 LeGrand Michel Toulouse
11;
12RUN;
13 
14/* Définition de macro-variables pour le service et l'authentification */
15%LET DMS_HOST = http://localhost;
16%LET DMS_PORT = 21036;
17%LET DMS_USER = utilisateur_avance;
18%LET DMS_PASS = motdepasse_avance;
19%LET SERVICE_1 = normalisation_noms.ddf;
20%LET SERVICE_2 = enrichissement_cp.ddf;
21 
22/* Première exécution : Normalisation des noms */
23PROC DMSRVDATASVC
24 HOST="&DMS_HOST" PORT=&DMS_PORT
25 SERVICE="&SERVICE_1"
26 DATA=dqsio.dfsample
27 OUT=work.outsrv3_normalized
28 USERID="&DMS_USER" PASSWORD="&DMS_PASS";
29RUN;
30 
31/* Deuxième exécution : Enrichissement des codes postaux (avec les données normalisées) */
32/* Supposons que le service 'enrichissement_cp.ddf' utilise la sortie du premier service */
33PROC DMSRVDATASVC
34 HOST="&DMS_HOST" PORT=&DMS_PORT
35 SERVICE="&SERVICE_2"
36 DATA=work.outsrv3_normalized /* Utilise la sortie du premier service comme entrée */
37 OUT=work.outsrv3_final
38 USERID="&DMS_USER" PASSWORD="&DMS_PASS";
39RUN;
40 
41/* Affichage des premières lignes du jeu de données final */
42PROC PRINT DATA=work.outsrv3_final(OBS=5);
43TITLE "Sortie des Services Multiples DataFlux (Avancé)";
44RUN;
4 Bloque de código
PROC DMSRVDATASVC / PROC CASUTIL / DATA STEP Data
Explicación :
Este ejemplo demuestra cómo integrar el procedimiento DMSRVDATASVC en un entorno SAS Viya/CAS. Los datos de entrada se cargan primero en una tabla CAS (`mycas.dfsample_cas`) utilizando PROC CASUTIL. Luego, esta tabla CAS se pasa como entrada al procedimiento DMSRVDATASVC, y el conjunto de datos de salida se crea y persiste directamente en CAS (`mycas.outsrv4_cas`). Esto permite aprovechar el rendimiento y las capacidades de procesamiento distribuido de CAS para la preparación y el análisis de datos antes y después de la llamada al servicio DataFlux. Se incluye una limpieza de las tablas CAS.
¡Copiado!
1/* Établissement d'une session CAS et création d'une bibliothèque CAS */
2CAS;
3LIBNAME mycas cas;
4 
5/* Chargement des données d'entrée vers CAS */
6LIBNAME dqsio "%sysfunc(pathname(WORK))"; /* Assurez-vous que dqsio pointe vers un emplacement valide */
7DATA dqsio.dfsample;
8 LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
9 INPUT ID $ Nom $ Prenom $ Ville $;
10 DATALINES;
11001 Dupont Jean Paris
12006 Dubois Sophie Nice
13007 Bernard Marc Rennes
14;
15RUN;
16 
17PROC CASUTIL;
18 LOAD DATA=dqsio.dfsample OUTCASLIB=mycas OUTCASF=dfsample_cas;
19RUN;
20QUIT;
21 
22/* Envoi des données CAS à un service DataFlux et réception de la sortie en CAS */
23PROC DMSRVDATASVC
24 HOST='http://localhost'
25 PORT=21036
26 SERVICE='verification_profil.ddf'
27 DATA=mycas.dfsample_cas /* Utilise un jeu de données CAS en entrée */
28 OUT=mycas.outsrv4_cas /* La sortie est directement chargée en CAS */
29 TIMEOUT=60
30 USERID='utilisateur_cas'
31 PASSWORD='motdepasse_cas';
32RUN;
33 
34/* Affichage des premières lignes du jeu de données CAS de sortie */
35PROC PRINT DATA=mycas.outsrv4_cas(OBS=5);
36TITLE "Sortie du Service DataFlux (Intégration CAS)";
37RUN;
38 
39/* Nettoyage : Suppression des tables CAS */
40PROC CASUTIL;
41 DROP TABLE=dfsample_cas CASLIB=mycas;
42 DROP TABLE=outsrv4_cas CASLIB=mycas;
43RUN;
44QUIT;
45 
46CAS DISCONNECT;
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.