Publié le :
Qualité des données CREATION_INTERNE

Exécuter un service DataFlux Data Management Studio (PROC DMSRVDATASVC)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Cette procédure est utilisée pour interagir avec les services de qualité des données créés et déployés via DataFlux Data Management Studio. Elle permet d'envoyer un jeu de données SAS© en entrée à un service, de faire exécuter le service sur le serveur DataFlux Data Management, puis de récupérer les résultats dans un nouveau jeu de données SAS©. Les options clés incluent la spécification du SERVICE à exécuter, du jeu de données d'entrée (DATA=) et du jeu de données de sortie (OUT=). Le port de communication est par défaut le 21036 si non spécifié.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) pour assurer l'autonomie du code.

1 Bloc de code
PROC DMSRVDATASVC Data
Explication :
Cet exemple illustre l'utilisation la plus simple de la procédure DMSRVDATASVC. Il crée un jeu de données d'entrée `work.insrv` avec des noms et adresses. Ensuite, il exécute un service nommé 'StandardizeAddresses' (qui doit exister sur le serveur DataFlux) en utilisant ce jeu de données comme entrée et stocke les résultats dans `work.outsrv_basic`. Enfin, il affiche le jeu de données de sortie.
Copié !
1DATA work.insrv;
2 LENGTH Name $30 Address $50;
3 INPUT Name $ Address $;
4 DATALINES;
5 John Doe 123 Main St
6 Jane Smith 456 Oak Ave
7 ;
8RUN;
9 
10PROC DMSRVDATASVC
11 SERVICE='StandardizeAddresses'
12 DATA=work.insrv
13 OUT=work.outsrv_basic;
14RUN;
15 
16PROC PRINT DATA=work.outsrv_basic;
17 TITLE 'Résultats du service de standardisation basique';
18RUN;
2 Bloc de code
PROC DMSRVDATASVC Data
Explication :
Cet exemple montre comment spécifier des options supplémentaires lors de l'exécution d'un service. Outre `SERVICE`, `DATA` et `OUT`, il utilise `SERVER` pour désigner explicitement le serveur DataFlux (ici 'localhost') et `PORT` pour un port non standard (21037). L'option `LOG` est ajoutée pour capturer les messages d'erreur ou d'information du service dans un jeu de données SAS.
Copié !
1DATA work.input_data;
2 LENGTH Email $50;
3 INPUT Email $;
4 DATALINES;
5 test@example.com
6 invalid-email
7 another.one@domain.co.uk
8 ;
9RUN;
10 
11PROC DMSRVDATASVC
12 SERVICE='EmailValidationService'
13 SERVER='localhost'
14 PORT=21037
15 DATA=work.input_data
16 OUT=work.output_data_intermediate
17 LOG=work.service_log;
18RUN;
19 
20PROC PRINT DATA=work.output_data_intermediate;
21 TITLE 'Résultats du service de validation d''e-mails';
22RUN;
23 
24PROC PRINT DATA=work.service_log;
25 TITLE 'Journal d''exécution du service';
26RUN;
3 Bloc de code
PROC DMSRVDATASVC Data
Explication :
Cet exemple avancé simule un traitement par lots de noms de clients à l'aide d'un service de standardisation. L'option `ERRORONFAILURE=YES` est cruciale ici : elle demande à SAS de générer une erreur si le service DataFlux échoue, ce qui est utile pour l'intégration dans des chaînes de traitement automatisées. Le code inclut une macro simple pour vérifier le succès de l'opération via le code de retour d'ouverture du jeu de données, signalant les erreurs de manière programmatique.
Copié !
1DATA work.customer_names;
2 LENGTH CustomerID 8 FirstName $20 LastName $20;
3 INPUT CustomerID FirstName $ LastName $;
4 DATALINES;
5 1 John Doe
6 2 Jane Smith
7 3 PETER J. JONES
8 4 mary_ann
9 ;
10RUN;
11 
12PROC DMSRVDATASVC
13 SERVICE='NameStandardizationBatch'
14 DATA=work.customer_names
15 OUT=work.standardized_names
16 ERRORONFAILURE=YES;
17RUN;
18 
19/* Vérifier les erreurs potentielles dans le log */
20%MACRO CheckLog;
21 %LOCAL rc;
22 %LET rc = %SYSFUNC(OPEN(WORK.standardized_names, I));
23 %IF &rc EQ 0 %THEN %DO;
24 %PUT NOTE: Le service a été exécuté avec succès.;
25 %LET rc = %SYSFUNC(CLOSE(&rc));
26 %END;
27 %ELSE %DO;
28 %PUT ERROR: Le service a échoué. Vérifiez le log SAS pour plus de détails.;
29 %END;
30%MEND CheckLog;
31 
32%CheckLog;
33 
34PROC PRINT DATA=work.standardized_names;
35 TITLE 'Noms des clients standardisés';
36RUN;
4 Bloc de code
PROC DMSRVDATASVC Data
Explication :
Cet exemple démontre l'intégration de la procédure DMSRVDATASVC dans un environnement SAS Viya avec des tables CAS. Il initialise une session CAS et crée une table CAS (`mycas.raw_products`). La procédure DMSRVDATASVC est ensuite appelée en spécifiant cette table CAS comme entrée. Le service de qualité des données (ici 'ProductDescriptionCleanse') traite la table en mémoire distribuée, et les résultats sont stockés dans une nouvelle table CAS (`mycas.cleaned_products`). Les commandes PROC CASUTIL et PROC PRINT sont utilisées pour vérifier les tables CAS et afficher les données traitées, mettant en évidence le traitement in-memory.
Copié !
1CAS;
2CASLIB _ALL_ ASSIGN;
3 
4DATA _NULL_;
5 CALL SYMPUTX('CAS_SESSION_NAME', %SYSFUNC(GETOPTION(CASAUTOSESS)));
6RUN;
7 
8/* Création d'une table CAS à partir de données SAS */
9DATA mycas.raw_products;
10 LENGTH ProductID $10 Description $100;
11 INPUT ProductID $ Description $;
12 DATALINES;
13 P001 Hand Sanitizer 500ml
14 P002 Hand sanitizer 100ml
15 P003 Hand SANITIZER 200 ml
16 ;
17RUN;
18 
19/* Exécution du service Data Quality sur la table CAS */
20PROC DMSRVDATASVC
21 SERVICE='ProductDescriptionCleanse'
22 DATA=mycas.raw_products
23 OUT=mycas.cleaned_products;
24RUN;
25 
26/* Affichage des résultats de la table CAS */
27PROC CASUTIL SESSREF=&CAS_SESSION_NAME;
28 LIST TABLES / CASLIB='CASUSER';
29QUIT;
30 
31PROC PRINT DATA=mycas.cleaned_products;
32 TITLE 'Descriptions de produits nettoyées via CAS';
33RUN;
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.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved