Veröffentlicht am :
Datenqualität CREATION_INTERNE

DMSRVDATASVC-Prozedur: Senden von Daten an einen Dienst und Ausgabe in ein Dataset

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die DMSRVDATASVC-Prozedur ermöglicht die Interaktion mit DataFlux-Datenverwaltungsdiensten. Sie erleichtert das Senden von SAS©-Eingabedaten an einen externen DataFlux-Dienst und den Empfang der Dienstergebnisse als SAS©-Dataset. Diese Prozedur ist unerlässlich, um die Datenqualitäts- und Datenverwaltungsfunktionen von DataFlux direkt in SAS© Viya-Workflows zu integrieren. Zu den wichtigsten Optionen gehören die Angabe des Hosts, des Ports, des Dienstnamens, der Eingabe- und Ausgabedatasets, des Timeouts (TIMEOUT) und der Authentifizierungsinformationen (USERID, PASSWORD) zur Sicherung des Dienstzugriffs.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP.

1 Codeblock
PROC DMSRVDATASVC Data
Erklärung :
Dieses Beispiel veranschaulicht die einfachste Verwendung der DMSRVDATASVC-Prozedur, um ein SAS-Dataset (`dqsio.dfsample`) an einen DataFlux-Dienst ('analyse_de_donnees.ddf') zu senden und die Antwort in einem neuen SAS-Dataset (`work.outsrv1_basic`) zu speichern. Es enthält die wesentlichen Parameter wie Host, Port, Dienstname sowie Authentifizierung und ein Timeout. Die Eingabedaten werden mit einem DATA-Schritt und `datalines` erstellt, um die Autonomie des Beispiels zu gewährleisten.
Kopiert!
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 Codeblock
PROC DMSRVDATASVC Data
Erklärung :
Dieses Zwischenbeispiel zeigt, wie zusätzliche Optionen für eine bessere Nachverfolgbarkeit und Timeout-Kontrolle verwendet werden können. Die Option `TIMEOUT` wird auf 120 Sekunden erhöht. Die Optionen `LOGFILE` und `STATUSFILE` werden verwendet, um detaillierte Informationen zur Dienstausführung und zum Status zu protokollieren, was für die Fehlerbehebung und Überwachung entscheidend ist. Der Inhalt dieser Dateien wird anschließend mit einfachen DATA-Schritten angezeigt, um deren Abfrage zu simulieren.
Kopiert!
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 Codeblock
PROC DMSRVDATASVC / DATA STEP Data
Erklärung :
Dieses fortgeschrittene Beispiel demonstriert eine Verarbeitungskette, die mehrere Aufrufe an den DataFlux-Dienst unter Verwendung von Makrovariablen für Flexibilität beinhaltet. Der erste Aufruf (`SERVICE_1`) normalisiert Namen, und seine Ausgabe (`work.outsrv3_normalized`) wird dann als Eingabe für einen zweiten Dienst (`SERVICE_2`) verwendet, der Postleitzahlen anreichert. Die Verwendung von Makrovariablen ermöglicht die einfache Parametrisierung von Verbindungsdetails und Dienstnamen, was in Produktionsumgebungen oder für automatisierte Tests nützlich ist.
Kopiert!
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 Codeblock
PROC DMSRVDATASVC / PROC CASUTIL / DATA STEP Data
Erklärung :
Dieses Beispiel zeigt, wie die DMSRVDATASVC-Prozedur in eine SAS Viya/CAS-Umgebung integriert wird. Die Eingabedaten werden zunächst mit PROC CASUTIL in eine CAS-Tabelle (`mycas.dfsample_cas`) geladen. Anschließend wird diese CAS-Tabelle als Eingabe an die DMSRVDATASVC-Prozedur übergeben, und das Ausgabedataset wird direkt in CAS (`mycas.outsrv4_cas`) erstellt und gespeichert. Dies ermöglicht es, die Leistung und die verteilten Verarbeitungsfunktionen von CAS für die Datenvorbereitung und -analyse vor und nach dem Aufruf des DataFlux-Dienstes zu nutzen. Eine Bereinigung der CAS-Tabellen ist inbegriffen.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.