Publié le :
Qualité des Données CREATION_INTERNE

Procédure DMSRVDATASVC : Envoi de données à un service et sortie vers un jeu de données

Ce code est également disponible en : Deutsch English Español
En attente de validation
La procédure DMSRVDATASVC permet d'interagir avec les services de gestion des données DataFlux. Elle facilite l'envoi de données SAS© en entrée à un service externe DataFlux et la réception des résultats du service sous forme de jeu de données SAS©. Cette procédure est essentielle pour intégrer les capacités de qualité et de gestion des données de DataFlux directement dans les flux de travail SAS© Viya. Les options clés incluent la spécification de l'hôte, du port, du nom du service, des jeux de données d'entrée et de sortie, du délai d'attente (TIMEOUT) et des informations d'authentification (USERID, PASSWORD) pour sécuriser l'accès au service.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP.

1 Bloc de code
PROC DMSRVDATASVC Data
Explication :
Cet exemple illustre l'utilisation la plus simple de la procédure DMSRVDATASVC pour envoyer un jeu de données SAS (`dqsio.dfsample`) à un service DataFlux ('analyse_de_donnees.ddf') et stocker la réponse dans un nouveau jeu de données SAS (`work.outsrv1_basic`). Il inclut les paramètres essentiels tels que l'hôte, le port, le nom du service, ainsi que l'authentification et un délai d'attente. Les données d'entrée sont créées en utilisant un DATA step avec `datalines` pour assurer l'autonomie de l'exemple.
Copié !
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 Bloc de code
PROC DMSRVDATASVC Data
Explication :
Cet exemple intermédiaire montre comment utiliser des options supplémentaires pour une meilleure traçabilité et un contrôle du délai d'exécution. L'option `TIMEOUT` est augmentée à 120 secondes. Les options `LOGFILE` et `STATUSFILE` sont utilisées pour enregistrer les informations détaillées de l'exécution du service et son statut, ce qui est crucial pour le débogage et la surveillance. Le contenu de ces fichiers est ensuite affiché en utilisant de simples DATA steps, simulant leur consultation.
Copié !
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 Bloc de code
PROC DMSRVDATASVC / DATA STEP Data
Explication :
Cet exemple avancé démontre une chaîne de traitement impliquant plusieurs appels au service DataFlux, en utilisant des macro-variables pour la flexibilité. Le premier appel (`SERVICE_1`) normalise les noms, et sa sortie (`work.outsrv3_normalized`) est ensuite utilisée comme entrée pour un second service (`SERVICE_2`) qui enrichit les codes postaux. L'utilisation de macro-variables permet de paramétrer facilement les détails de connexion et les noms de service, ce qui est utile dans des environnements de production ou pour des tests automatisés.
Copié !
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 Bloc de code
PROC DMSRVDATASVC / PROC CASUTIL / DATA STEP Data
Explication :
Cet exemple démontre comment intégrer la procédure DMSRVDATASVC dans un environnement SAS Viya/CAS. Les données d'entrée sont d'abord chargées dans une table CAS (`mycas.dfsample_cas`) à l'aide de PROC CASUTIL. Ensuite, cette table CAS est passée comme entrée à la procédure DMSRVDATASVC, et le jeu de données de sortie est directement créé et persisté dans CAS (`mycas.outsrv4_cas`). Cela permet de tirer parti de la performance et des capacités de traitement distribué de CAS pour la préparation et l'analyse des données avant et après l'appel au service DataFlux. Un nettoyage des tables CAS est inclus.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.