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é !
/* 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 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é !
/* 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 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é !
/* 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 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é !
/* É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;
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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.