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!
/* Préparation des données d'entrée */
libname dqsio "%sysfunc(pathname(WORK))";
DATA dqsio.dfsample;
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
INPUT ID $ Nom $ Prenom $ Ville $;
DATALINES;
001 Dupont Jean Paris
002 Martin Sylvie Lyon
003 Durand Pierre Marseille
004 Petit Claire Bordeaux
005 LeGrand Michel Toulouse
;
RUN;
/* Envoi des données d'entrée à un service DataFlux et réception de la sortie */
PROC DMSRVDATASVC
HOST='http://localhost' /* Hôte du DataFlux Data Management Server */
PORT=21036 /* Port du service */
SERVICE='analyse_de_donnees.ddf' /* Nom du service DataFlux */
DATA=dqsio.dfsample /* Jeu de données SAS en entrée */
OUT=work.outsrv1_basic /* Jeu de données SAS de sortie */
TIMEOUT=36 /* Délai d'attente du service en secondes */
USERID='utilisateur_test'/* Identifiant de l'utilisateur du service */
PASSWORD='motdepasse_test';/* Mot de passe de l'utilisateur du service */
RUN;
/* Affichage des premières lignes du jeu de données de sortie */
PROC PRINT DATA=work.outsrv1_basic(OBS=5);
TITLE "Sortie Basique du Service DataFlux";
RUN;
1
/* Préparation des données d'entrée */
2
LIBNAME dqsio "%sysfunc(pathname(WORK))";
3
4
DATA dqsio.dfsample;
5
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
6
INPUT ID $ Nom $ Prenom $ Ville $;
7
DATALINES;
8
001 Dupont Jean Paris
9
002 Martin Sylvie Lyon
10
003 Durand Pierre Marseille
11
004 Petit Claire Bordeaux
12
005 LeGrand Michel Toulouse
13
;
14
RUN;
15
16
/* Envoi des données d'entrée à un service DataFlux et réception de la sortie */
17
PROC 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 */
26
RUN;
27
28
/* Affichage des premières lignes du jeu de données de sortie */
29
PROC PRINTDATA=work.outsrv1_basic(OBS=5);
30
TITLE "Sortie Basique du Service DataFlux";
31
RUN;
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!
/* Préparation des données d'entrée (identique à l'exemple 1) */
libname dqsio "%sysfunc(pathname(WORK))";
DATA dqsio.dfsample;
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
INPUT ID $ Nom $ Prenom $ Ville $;
DATALINES;
001 Dupont Jean Paris
002 Martin Sylvie Lyon
003 Durand Pierre Marseille
004 Petit Claire Bordeaux
005 LeGrand Michel Toulouse
;
RUN;
/* Envoi des données d'entrée avec gestion des logs et un timeout plus long */
PROC DMSRVDATASVC
HOST='http://localhost'
PORT=21036
SERVICE='validation_adresse.ddf' /* Autre service, par exemple */
DATA=dqsio.dfsample
OUT=work.outsrv2_log
TIMEOUT=120 /* Délai d'attente étendu */
LOGFILE="/tmp/dmsrv_log.txt" /* Spécifie un fichier de log pour le service */
STATUSFILE="/tmp/dmsrv_status.txt" /* Fichier pour le statut d'exécution */
USERID='utilisateur_test'
PASSWORD='motdepasse_test';
RUN;
/* Affichage des premières lignes du jeu de données de sortie */
PROC PRINT DATA=work.outsrv2_log(OBS=5);
TITLE "Sortie avec Fichiers de Log et Statut";
RUN;
/* Affichage du contenu du fichier de log (si créé) */
FILENAME mylog "/tmp/dmsrv_log.txt";
DATA _NULL_;
INFILE mylog;
INPUT;
PUT _INFILE_;
RUN;
/* Affichage du contenu du fichier de statut (si créé) */
FILENAME mystatus "/tmp/dmsrv_status.txt";
DATA _NULL_;
INFILE mystatus;
INPUT;
PUT _INFILE_;
RUN;
1
/* Préparation des données d'entrée (identique à l'exemple 1) */
2
LIBNAME dqsio "%sysfunc(pathname(WORK))";
3
4
DATA dqsio.dfsample;
5
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
6
INPUT ID $ Nom $ Prenom $ Ville $;
7
DATALINES;
8
001 Dupont Jean Paris
9
002 Martin Sylvie Lyon
10
003 Durand Pierre Marseille
11
004 Petit Claire Bordeaux
12
005 LeGrand Michel Toulouse
13
;
14
RUN;
15
16
/* Envoi des données d'entrée avec gestion des logs et un timeout plus long */
17
PROC 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';
28
RUN;
29
30
/* Affichage des premières lignes du jeu de données de sortie */
31
PROC PRINTDATA=work.outsrv2_log(OBS=5);
32
TITLE "Sortie avec Fichiers de Log et Statut";
33
RUN;
34
35
/* Affichage du contenu du fichier de log (si créé) */
36
FILENAME mylog "/tmp/dmsrv_log.txt";
37
DATA _NULL_;
38
INFILE mylog;
39
INPUT;
40
PUT _INFILE_;
41
RUN;
42
43
/* Affichage du contenu du fichier de statut (si créé) */
44
FILENAME mystatus "/tmp/dmsrv_status.txt";
45
DATA _NULL_;
46
INFILE mystatus;
47
INPUT;
48
PUT _INFILE_;
49
RUN;
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!
/* Préparation des données d'entrée (un sous-ensemble pour l'exemple) */
libname dqsio "%sysfunc(pathname(WORK))";
DATA dqsio.dfsample;
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
INPUT ID $ Nom $ Prenom $ Ville $;
DATALINES;
001 Dupont Jean Paris
003 Durand Pierre Marseille
005 LeGrand Michel Toulouse
;
RUN;
/* Définition de macro-variables pour le service et l'authentification */
%LET DMS_HOST = http://localhost;
%LET DMS_PORT = 21036;
%LET DMS_USER = utilisateur_avance;
%LET DMS_PASS = motdepasse_avance;
%LET SERVICE_1 = normalisation_noms.ddf;
%LET SERVICE_2 = enrichissement_cp.ddf;
/* Première exécution : Normalisation des noms */
PROC DMSRVDATASVC
HOST="&DMS_HOST" PORT=&DMS_PORT
SERVICE="&SERVICE_1"
DATA=dqsio.dfsample
OUT=work.outsrv3_normalized
USERID="&DMS_USER" PASSWORD="&DMS_PASS";
RUN;
/* Deuxième exécution : Enrichissement des codes postaux (avec les données normalisées) */
/* Supposons que le service 'enrichissement_cp.ddf' utilise la sortie du premier service */
PROC DMSRVDATASVC
HOST="&DMS_HOST" PORT=&DMS_PORT
SERVICE="&SERVICE_2"
DATA=work.outsrv3_normalized /* Utilise la sortie du premier service comme entrée */
OUT=work.outsrv3_final
USERID="&DMS_USER" PASSWORD="&DMS_PASS";
RUN;
/* Affichage des premières lignes du jeu de données final */
PROC PRINT DATA=work.outsrv3_final(OBS=5);
TITLE "Sortie des Services Multiples DataFlux (Avancé)";
RUN;
1
/* Préparation des données d'entrée (un sous-ensemble pour l'exemple) */
2
LIBNAME dqsio "%sysfunc(pathname(WORK))";
3
4
DATA dqsio.dfsample;
5
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
6
INPUT ID $ Nom $ Prenom $ Ville $;
7
DATALINES;
8
001 Dupont Jean Paris
9
003 Durand Pierre Marseille
10
005 LeGrand Michel Toulouse
11
;
12
RUN;
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 */
23
PROC 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";
29
RUN;
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 */
33
PROC 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";
39
RUN;
40
41
/* Affichage des premières lignes du jeu de données final */
42
PROC PRINTDATA=work.outsrv3_final(OBS=5);
43
TITLE "Sortie des Services Multiples DataFlux (Avancé)";
44
RUN;
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!
/* Établissement d'une session CAS et création d'une bibliothèque CAS */
CAS;
libname mycas cas;
/* Chargement des données d'entrée vers CAS */
libname dqsio "%sysfunc(pathname(WORK))"; /* Assurez-vous que dqsio pointe vers un emplacement valide */
DATA dqsio.dfsample;
LENGTH ID $10 Nom $20 Prenom $20 Ville $15;
INPUT ID $ Nom $ Prenom $ Ville $;
DATALINES;
001 Dupont Jean Paris
006 Dubois Sophie Nice
007 Bernard Marc Rennes
;
RUN;
PROC CASUTIL;
LOAD DATA=dqsio.dfsample OUTCASLIB=mycas OUTCASF=dfsample_cas;
RUN;
QUIT;
/* Envoi des données CAS à un service DataFlux et réception de la sortie en CAS */
PROC DMSRVDATASVC
HOST='http://localhost'
PORT=21036
SERVICE='verification_profil.ddf'
DATA=mycas.dfsample_cas /* Utilise un jeu de données CAS en entrée */
OUT=mycas.outsrv4_cas /* La sortie est directement chargée en CAS */
TIMEOUT=60
USERID='utilisateur_cas'
PASSWORD='motdepasse_cas';
RUN;
/* Affichage des premières lignes du jeu de données CAS de sortie */
PROC PRINT DATA=mycas.outsrv4_cas(OBS=5);
TITLE "Sortie du Service DataFlux (Intégration CAS)";
RUN;
/* Nettoyage : Suppression des tables CAS */
PROC CASUTIL;
DROP TABLE=dfsample_cas CASLIB=mycas;
DROP TABLE=outsrv4_cas CASLIB=mycas;
RUN;
QUIT;
CAS DISCONNECT;
1
/* Établissement d'une session CAS et création d'une bibliothèque CAS */
2
CAS;
3
LIBNAME mycas cas;
4
5
/* Chargement des données d'entrée vers CAS */
6
LIBNAME dqsio "%sysfunc(pathname(WORK))"; /* Assurez-vous que dqsio pointe vers un emplacement valide */
/* Envoi des données CAS à un service DataFlux et réception de la sortie en CAS */
23
PROC 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';
32
RUN;
33
34
/* Affichage des premières lignes du jeu de données CAS de sortie */
35
PROC PRINTDATA=mycas.outsrv4_cas(OBS=5);
36
TITLE "Sortie du Service DataFlux (Intégration CAS)";
37
RUN;
38
39
/* Nettoyage : Suppression des tables CAS */
40
PROC CASUTIL;
41
DROP TABLE=dfsample_cas CASLIB=mycas;
42
DROP TABLE=outsrv4_cas CASLIB=mycas;
43
RUN;
44
QUIT;
45
46
CAS 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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.