Vous êtes sur la page 1sur 8

PILOTER VOS JOBS SAS DATA MANAGEMENT DEPUIS SAS BASE

Le contexte conomique actuel associ lexplosion des


volumes de donnes donne aujourdhui aux entreprises
un dfi important relever. Dans ce contexte Big
Data, SAS Data Management aide les entreprises
amliorer et piloter les donnes sur lesquelles elles
s'appuient pour prendre leurs dcisions stratgiques.

La technologie SAS de gestion de la qualit des donnes vous permet ainsi de crer des jobs
qui normalisent, valident et intgrent les donnes chaque tape de leur cycle de vie.

Une fois ces jobs crs, il est intressant de pouvoir les utiliser dans vos programmes SAS.

Cet article prsente les fonctions SAS

utiliser ainsi que les cls pour vous aider piloter vos jobs
SAS Data management.
Table des matires
Piloter vos jobs SAS Data Management depuis SAS Base ....................................................... 1
Nouveaut SAS 9.4 ........................................................................................................... 1
Pr-requis ........................................................................................................................ 2
Scnario .......................................................................................................................... 2
Prsentation du job Dataflux .............................................................................................. 4
Le programme SAS en dtail .............................................................................................. 4
Etape 1 et 2 : Prparation des donnes ............................................................................ 4
Etape 3 6 : Interaction SAS et Dataflux ......................................................................... 5
Vrification de lexcution du job ..................................................................................... 5
Etape 7 et 8 : Gnration du rapport html ........................................................................ 6
En cas de problme ............................................................... Error! Bookmark not defined.
Conclusion ....................................................................................................................... 8


Nouveaut SAS 9.4

SAS a maintenant entirement intgr la suite DataFlux. Cela permettra de mettre en uvre une
stratgie de gestion de l'information mieux intgre, allant au-del de la gestion des donnes et de la
gouvernance, en sappuyant sur lanalytique pour une meilleure prise de dcision.

Certains produits DataFlux sont en train de changer de noms et d'autres le seront prochainement.
Pour plus dinformation, nhsitez pas consulter les pages :

http://support.sas.com/software/products/dataflux/

http://support.sas.com/software/products/entdis/index.html




Les modifications des offres pourraient affecter vos renouvellements de licences.




Caractristiques :
Catgories : Data Management
OS : Windows
Version : 9.4
Vrifi en Mars 2014

Mars 2014 - 2 -
Pr-requis

Pour pouvoir suivre le scenario de cet article, il est ncessaire de possder SAS Data
Management Advanced.

SAS Data Management Advanced propose une palette doutils complte pour la qualit et la
gouvernance des donnes, conue pour rpondre aux besoins d'intgration de donnes
d'entreprise. Les produits compris dans cette solution sont :

Base SAS


SAS

Metadata Server, qui fournit un rfrentiel ouvert et centralis pour le stockage et la gestion
de mtadonnes d'entreprise

DataFlux

Data Management Server



DataFlux

Data Management Studio



SAS

Data Integration Server, qui assure lextraction, le nettoyage, la transformation, la mise


en conformit, lagrgation, le chargement et la gestion des donnes. Permet galement la
rutilisation des processus dvelopps par dautres quipes.


Pour le scenario de cet article, nous avons galement utilis :

SAS/ACCESS to Mysql

Scnario

Dans cet article, nous allons utiliser un exemple de projet afin de faciliter la comprhension de
linteraction entre SAS

et les jobs SAS Data Management. Lobjectif est de rapprocher deux
tables dune base de donnes afin de voir si les donnes dune des tables correspondent aux
donnes de la seconde. Ainsi, imaginons quune table contienne les clients dune entreprise, et la
seconde table une liste de clients surveiller (par exemple, des clients inscrits sur une liste noire).
Lopration consiste donc rapprocher les deux tables afin de vrifier si un client de lentreprise
nest pas inscrit dans cette liste noire.

Techniquement, nous avons un Datajob dvelopp sous DataFlux Data Management Studio.

Ce
Datajob est excut et dploy sous DataFlux Data Management Server. Ce Datajob est, en
quelque sorte, lintelligence de notre projet. Celui-ci lit les donnes dune table Mysql et cre
des matchcodes pour chaque nom et prnom de la table Mysql. Un matchcode est un code
alphanumrique identifiant le nom et l'adresse complte d'un client. Notons galement que la taille
de ces matchcodes nest pas forcment identique selon les locales, les data types, les dfinitions
Il permet de comparer, trier, regrouper ou ddoublonner des fichiers. Le choix du matchcode est
dterminant pour ne pas omettre de rapprochement. Enfin, les matchcodes sont enregistrs dans
une seconde table Mysql.



Le but est donc de crer un programme SAS

qui va :

1/ Enrichir la table Mysql utilise en entre du Datajob DataFlux


2/ Excuter le DataJob sur SAS Management Server
3/ Afficher les rsultats sous forme de fichier html




Mars 2014 - 3 -
Le schma ci-dessous prsente les diffrentes tapes de notre scenario :































1. SAS Base : Lecture du fichier csv,
2. SAS/ACCESS to Mysql : Import des donnes dans Mysql,
3. Dclenchement du job,
4. DATAFLUX MANAGEMENT SERVER : Excution du DataJob (cration des matchcodes),
5. DATAFLUX MANAGEMENT SERVER : Export des rsultats dans la base Mysql (via ODBC),
6. Envoi du code retour du Datajob SAS,
7. SAS Base : Cration dune table,
8. SAS Base : Cration dune page html affichant les rsultats.











Data Management
Server
(1)
(2)
(3)
(4)
(6)
(5)
(7)
(8)








Mars 2014 - 4 -
Prsentation du job Dataflux

Nous partons du principe que la conception du job DataFlux

ait dj t faite et que celui-ci


fonctionne. Ce job utilis pour notre scenario a pour objectif la cration dun code matchcode pour
un couple nom/prnom.


Le job est dploy sur le serveur (cest--dire quil peut tre excut par celui-ci) :

Le programme SAS en dtail
Etape 1 et 2 : Prparation des donnes

Examinons maintenant le code SAS en dtail :

La premire tape consiste crer une connexion la base Mysql. Pour cela, nous allons crer
un libname en utilisant le module SAS/ACCESS to Mysql.

libname myData mysql user=root database=sas server=localhost port=3306;


Une fois le libname cr, nous pouvons purger la table customers. Cette table va contenir le
contenu du fichier csv.

proc delete data = myData.customers;
run;


Nous pouvons importer le fichier csv dans la table customers de notre base de donnes Mysql.

filename import "customers.csv" ;

data myData.customers;
infile import delimiter=";";
input nom $ prenom $;
run;

Mars 2014 - 5 -
Nous crons ensuite une rfrence qui servira de comparaison avec la table customers :

data myData.reference;
length nom prenom $50.;
input nom $ prenom $;
datalines;
Housset Nicolas
;
run;

Etape 3 6 : Interaction SAS et Dataflux

Nous arrivons maintenant dans le cur du programme.
Nous allons en effet utiliser la fonction dmsrvbatchjob afin dexcuter le job via DataFlux

Data
Management Server.

data _null_;
LENGTH jobid $52;

jobid = dmsrvbatchjob ('generate_matchcode.djf', 'localhost', 21036);

jobrc = dmsrvjobstatus (jobid, 'localhost', 21036);

copyrc = dmsrvCopyLog (jobid, 'localhost', 21036,
'C:\temp\Dataflux\logs\my.log');

put "jobid = " jobid;
put "jobrc = " jobrc;

run;


Dans notre programme, nous utilisons trois fonctions :

Dmsrvbatchjob

Cette fonction va dclencher lexcution du job pass en paramtre sur le
serveur. Elle retourne le jobid cr par Dataflux Data Management Server.
Dmsrvjobstatus

Cette fonction permet de rcuprer le code retour du jobid pass en
paramtre.
DmsrvCopyLog

Cette fonction permet de rapatrier la log dexcution du job.

Ces trois fonctions prennent le nom du serveur et le port du serveur en paramtres. Dans notre
exemple, il sagit de localhost et de 21036, 21036 tant le port par dfaut de Data Management
Server.

Vrification de lexcution du job

Il est possible de vrifier lexcution du job de plusieurs manires :

Dans le journal SAS, en utilisant la macro variable jobrc :




Mars 2014 - 6 -
En examinant le fichier de log rapatri via la fonction dmsrvCopyLog :




Directement dans Dataflux Data Management Studio :
Data management Servers > Batch Jobs > Run history :




Etape 7 et 8 : Gnration du rapport html

Afin de complter notre scenario, nous crons deux tables de rapprochement bases sur les
rsultats de lexcution du job par Dataflux.

proc sql;
create table Rappro50 as
select a.prenom_nom as nomA,
a.prenom_nom_MatchCode_50 as prenom_nom_MatchCodeA,
b.prenom_nom as nomB,
b.prenom_nom_MatchCode_50 as prenom_nom_MatchCodeB
from myData.reference_match_code a
inner join myData.watch_list b
on (b.prenom_nom_MatchCode_50=a.prenom_nom_MatchCode_50)
;quit;

proc sql;
create table Rappro as
select a.prenom_nom as nomA,
a.prenom_nom_MatchCode as prenom_nom_MatchCodeA,
b.prenom_nom as nomB,
b.prenom_nom_MatchCode as prenom_nom_MatchCodeB
from myData.reference_match_code a
inner join myData.watch_list b
on (b.prenom_nom_MatchCode=a.prenom_nom_MatchCode)
;quit;



Mars 2014 - 7 -
Nous pouvons maintenant crer deux fichiers HTML :

title1 Matching Customer;
title2 Sensitivity 85;
proc print data=Rappro label noobs;
label nomA ="Reference" nomB ="Watchlist";
run;

title1 Matching Customer;
title2 Sensitivity 50;
proc print data=Rappro50 label noobs;
label nomA ="Reference" nomB ="Watchlist";
run;


Nous obtenons ainsi deux listes. Dans la premire, avec une sensibilit de 85, nous constatons que
NICOLAS HOUSSET ressemble NICOLAS HOUSER , NICOLAS HOUSSEY , NICOLAS
HOUSET et NICOLAS HOUSSAIT

Dans la deuxime liste, avec une sensibilit de 50, la liste est plus importante.

s

En cas de problme
Si vous rencontrez des problmes lors de lutilisation des fonctions SAS prsentes dans cet article,
vous pouvez nous crire support@sas.com, en attachant votre message un document
explicitant votre problme, ce dernier accompagn, si possible, des jobs Dataflux, dun jeu de
donnes permettant de reproduire le comportement et les fichiers de logs retourns par la fonction
dmsrvCopyLog.


ERROR: Unrecognized ACJ error 28.


Cette erreur signifie que le serveur Data Management Server auquel vous tentez de vous connecter
nest pas dmarr.

Cette erreur peut galement survenir si les informations de connexion, passes en argument de la

Mars 2014 - 8 -
fonction dmsrvbatchjob ne sont pas correctes.


ERROR: Architect job generate_matchcode.djf failed (Job Not Found, ).


Soit le job nest pas dploy sur le serveur.
Soit le nom du job nest pas correct dans la fonction dmsrvbatchjob.

Si la syntaxe est correcte :
- Vrifiez, via Data Management Studio, si le job est correctement dploy sur le serveur,
- Vrifiez si le fichier du job est bien prsent physiquement sur le serveur.

ERROR: Architect job generate_matchcode.djf failed (Not Licensed, )


Ce message indique que la licence sur le serveur nest pas valide.

Si vous essayez de lancer votre job directement sur le serveur depuis Data Management Studio,
vous obtiendrez le message suivant :


Le message suivant : *** SERVER IS NOT LICENSED AND WILL NOT EXECUTE JOBS OR SERVICES
*** devrait galement tre prsent dans la log du serveur.




Conclusion
Comme nous avons pu le constater, la mise en place dun pilotage des Datajobs dvelopp sous
Dataflux Data Management Studio par SAS

est simple mettre en uvre.



A travers cet exemple simple, nous avons pu utiliser la puissance de SAS sans avoir dvelopper
de nouveau programme spcifique. Cela promet des perspectives intressantes.


Nicolas Housset
Consultant Support Clients SAS France

Vous aimerez peut-être aussi