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é !
DATA work.insrv;
LENGTH Name $30 Address $50;
INPUT Name $ Address $;
DATALINES;
John Doe 123 Main St
Jane Smith 456 Oak Ave
;
RUN;
PROC DMSRVDATASVC
SERVICE='StandardizeAddresses'
DATA=work.insrv
OUT=work.outsrv_basic;
RUN;
PROC PRINT DATA=work.outsrv_basic;
TITLE 'Résultats du service de standardisation basique';
RUN;
1
DATA 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
;
8
RUN;
9
10
PROC DMSRVDATASVC
11
SERVICE='StandardizeAddresses'
12
DATA=work.insrv
13
OUT=work.outsrv_basic;
14
RUN;
15
16
PROC PRINTDATA=work.outsrv_basic;
17
TITLE 'Résultats du service de standardisation basique';
18
RUN;
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é !
DATA work.input_data;
LENGTH Email $50;
INPUT Email $;
DATALINES;
test@example.com
invalid-email
another.one@domain.co.uk
;
RUN;
PROC DMSRVDATASVC
SERVICE='EmailValidationService'
SERVER='localhost'
PORT=21037
DATA=work.input_data
OUT=work.output_data_intermediate
LOG=work.service_log;
RUN;
PROC PRINT DATA=work.output_data_intermediate;
TITLE 'Résultats du service de validation d''e-mails';
RUN;
PROC PRINT DATA=work.service_log;
TITLE 'Journal d''exécution du service';
RUN;
1
DATA 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
;
9
RUN;
10
11
PROC 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;
18
RUN;
19
20
PROC PRINTDATA=work.output_data_intermediate;
21
TITLE 'Résultats du service de validation d''e-mails';
22
RUN;
23
24
PROC PRINTDATA=work.service_log;
25
TITLE 'Journal d''exécution du service';
26
RUN;
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é !
DATA work.customer_names;
LENGTH CustomerID 8 FirstName $20 LastName $20;
INPUT CustomerID FirstName $ LastName $;
DATALINES;
1 John Doe
2 Jane Smith
3 PETER J. JONES
4 mary_ann
;
RUN;
PROC DMSRVDATASVC
SERVICE='NameStandardizationBatch'
DATA=work.customer_names
OUT=work.standardized_names
ERRORONFAILURE=YES;
RUN;
/* Vérifier les erreurs potentielles dans le log */
%MACRO CheckLog;
%LOCAL rc;
%LET rc = %SYSFUNC(OPEN(WORK.standardized_names, I));
%IF &rc EQ 0 %THEN %DO;
%PUT NOTE: Le service a été exécuté avec succès.;
%LET rc = %SYSFUNC(CLOSE(&rc));
%END;
%ELSE %DO;
%PUT ERROR: Le service a échoué. Vérifiez le log SAS pour plus de détails.;
%END;
%MEND CheckLog;
%CheckLog;
PROC PRINT DATA=work.standardized_names;
TITLE 'Noms des clients standardisés';
RUN;
1
DATA 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
;
10
RUN;
11
12
PROC DMSRVDATASVC
13
SERVICE='NameStandardizationBatch'
14
DATA=work.customer_names
15
OUT=work.standardized_names
16
ERRORONFAILURE=YES;
17
RUN;
18
19
/* Vérifier les erreurs potentielles dans le log */
%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
34
PROC PRINTDATA=work.standardized_names;
35
TITLE 'Noms des clients standardisés';
36
RUN;
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é !
CAS;
CASLIB _ALL_ ASSIGN;
DATA _NULL_;
CALL SYMPUTX('CAS_SESSION_NAME', %SYSFUNC(GETOPTION(CASAUTOSESS)));
RUN;
/* Création d'une table CAS à partir de données SAS */
DATA mycas.raw_products;
LENGTH ProductID $10 Description $100;
INPUT ProductID $ Description $;
DATALINES;
P001 Hand Sanitizer 500ml
P002 Hand sanitizer 100ml
P003 Hand SANITIZER 200 ml
;
RUN;
/* Exécution du service Data Quality sur la table CAS */
PROC DMSRVDATASVC
SERVICE='ProductDescriptionCleanse'
DATA=mycas.raw_products
OUT=mycas.cleaned_products;
RUN;
/* Affichage des résultats de la table CAS */
PROC CASUTIL SESSREF=&CAS_SESSION_NAME;
LIST TABLES / CASLIB='CASUSER';
QUIT;
PROC PRINT DATA=mycas.cleaned_products;
TITLE 'Descriptions de produits nettoyées via CAS';
RUN;
/* Création d'une table CAS à partir de données SAS */
9
DATA 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
;
17
RUN;
18
19
/* Exécution du service Data Quality sur la table CAS */
20
PROC DMSRVDATASVC
21
SERVICE='ProductDescriptionCleanse'
22
DATA=mycas.raw_products
23
OUT=mycas.cleaned_products;
24
RUN;
25
26
/* Affichage des résultats de la table CAS */
27
PROC CASUTIL SESSREF=&CAS_SESSION_NAME;
28
LIST TABLES / CASLIB='CASUSER';
29
QUIT;
30
31
PROC PRINTDATA=mycas.cleaned_products;
32
TITLE 'Descriptions de produits nettoyées via CAS';
33
RUN;
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.