Qualité des données

Data Preprocessing : Industrialisez le nettoyage de vos datasets avant modélisation grâce aux services DataFlux

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Stéphanie

Le Conseil de l'Expert

Stéphanie
Spécialiste Machine Learning et IA.

L'intégration native des services DataFlux Data Management Studio dans SAS via la PROC DMSRVDATASVC représente le pont ultime entre la gouvernance des données et le traitement analytique. Cette procédure permet de déléguer les tâches complexes de standardisation (adresses, noms, e-mails) au moteur spécialisé de DataFlux tout en conservant la maîtrise du flux dans l'environnement SAS ou CAS.

Pourquoi cette procédure est-elle un atout stratégique ?
Modularité et Réutilisabilité : Au lieu de coder des règles de nettoyage complexes en Data Step, vous appelez des services métier centralisés. Cela garantit une cohérence totale : le service de standardisation des noms utilisé par l'équipe Marketing est exactement le même que celui utilisé par l'équipe Risque.

Transparence des Données : La transition est fluide. Vous envoyez une table SAS (DATA=), et vous récupérez une table SAS (OUT=) enrichie ou nettoyée, sans avoir à gérer manuellement les formats de fichiers plats ou les transferts FTP.

Interopérabilité Cloud (CAS) : En environnement Viya, la procédure sait interagir avec les tables en mémoire. Cela permet d'insérer une étape de qualité de données DataFlux directement au sein d'un pipeline de préparation de données distribué sur Cloud Analytic Services.

Diagnostics Précis : L'option LOG= est cruciale. Elle ne se contente pas de rapporter le succès technique, mais capture les messages métier du serveur DataFlux, facilitant le débogage des services qui pourraient échouer à cause de données d'entrée mal formées.

Les bonnes pratiques de l'expert
Gestion des Échecs : Utilisez systématiquement l'option ERRORONFAILURE=YES. Elle permet d'interrompre le flux en cas d'erreur critique sur le serveur DataFlux, évitant ainsi de propager des données non traitées dans la suite du pipeline.

Performance et Port : Par défaut, le port est 21036, mais vérifiez toujours la configuration de votre Data Management Server. Si vous traitez de gros volumes, assurez-vous que le service appelé est optimisé pour le mode "Batch" dans DataFlux Studio.

Contrôle Post-Exécution : Comme illustré dans l'exemple de macro, vérifiez l'existence et le contenu de la table de sortie avant d'enchaîner sur des procédures statistiques. Une table de sortie vide est souvent le signe d'un service qui a "réussi" techniquement mais qui n'a trouvé aucun enregistrement à traiter.

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;
L'Astuce Pro
Lorsque vous utilisez la PROC DMSRVDATASVC, assurez-vous que les types et les longueurs des colonnes de votre jeu de donnees de sortie (OUT=) correspondent exactement a ce que le service DataFlux est configure pour renvoyer. Si le service modifie la structure des donnees (par exemple en ajoutant des colonnes de score de qualite), SAS peut parfois tronquer les valeurs ou generer des erreurs de lecture si la table de sortie n est pas pre-definie ou si les metadonnees de communication ne sont pas parfaitement synchronisees avec le serveur DataFlux.
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


Documentation liée

Aucune documentation spécifique pour cette catégorie.