Déboguer facilement une bibliothèque SAS META ?
bibliothèque utilisant le moteur Meta, vous pouvez commencer par lire la documentation SAS sur ce type de bibliothèque, disponible ici et la.
Maintenant, si vous travaillez avec un libname défini dans les métadonnées vous êtes à l'aise avec la syntaxe suivante :
Toutefois, en utilisant un libname s'appuyant sur l'engine Meta vous ne connaissez pas les options associés à la bibliothèque , ni la syntaxe libname utilisée.
Aussi , en cas de problème de connexion, par exemple, il peut être donc intéressant de connaitre la syntaxe soumise ; de savoir ce qui se cache "behind the scenes" comme disent les américains.
C'est la qu'entre en scène l'option LIBDEBUG.
Son utilisation est enfantine :
En soumettant le code SAS ci-dessus, nous allons créer la bibliothèque NTZ définit dans les métadonnées :
Toutefois, avec l'option libdebug, une ligne est ajouté dans le journal SAS précisant l'instruction libname utilisé pour créer la bibliothèque.
Dans le cas de mon exemple voici la ligne correspondante affichée dans le journal :
Magique, non ?
L'option nous permet ainsi de visualiser l'ensemble des options utilisé "behind the scenes". Nous pouvons constater que de nombreuses options sont utilisés.
L'option permet également de connaitre l'utilisateur de la base de données utilisé (admin) et permet également de se rendre compte que l'accès à la base est en lecture seule (ACCESS=READONLY).
Aussi, je vous invite à prendre connaissance de la note
Usage Note 46712: Option for debugging META Libname Engine libraries concernant cette option.
A noter, que cette option n'est disponible qu'à partir de SAS 9.3 mais activable avec SAS 9.2 Maintenance 3 après avoir installé le hotfix SAS B25226.
Pour conclure en beauté, le code ci-dessous permet de remonter quelques informations utiles pour pousser vos investigations :
options metadebug;
%let my_metauser=%scan(&_METAUSER,1,'@');
%put _metauser="&my_metauser";
%let mymetauser = %scan(%sysget(METAUSER),1,'@');
%put metauser="&mymetauser";
%let mymetapass = %scan(%sysget(METAPASS),1,'@');
%put metapass="&mymetapass";
options msglevel=I sastrace='d,,d,d' nostsuffix sastraceloc=saslog;
proc options option=metauser value;run;
options sql_ip_trace=all;
libname TEST META library='malib' libdebug;
Si vous souhaitez en savoir un peu plus sur SAS/ACCESS, vous pouvez visiter le site de SAS mais également parcourir mes articles dédiés à SAS/ACCESS
Pour faire un lien vers cet article : https://tinyurl.com/metalibdebug
Aujourd'hui, je vous propose de découvrir une option simple à mettre en oeuvre afin de déboguer facilement une bibliothèque Meta. Si vous ne connaissez pas ce type de
1 2 3 4 5 6 |
libname nom_libname META library=nom_bibiliotheque_meta metaserver=adresse_serveur_metadata metaport=port_server_metadata metaprotocol=bridge metauser=login_metadata metapass=password_metadata metarepository='Foundation'; |
1 |
libname TEST META library="malib" libdebug; |
1 2 3 |
NOTE: Libref NTZ was successfully assigned as follows: Engine: META Physical Name: 172.28.193.3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
LIBDEBUG: Libname NTZ NETEZZA DATABASE=TEST BULKUNLOAD=YES PRESERVE_COL_NAMES=YES DBMAX_TEXT=2048 AUTOCOMMIT=NO PRESERVE_TAB_NAMES=YES ACCESS=READONLY CONNECTION_GROUP=CONNECT_A CONNECTION=SHAREDREAD TRACE=YES SQL_FUNCTIONS=ALL INSERTBUFF=10 MULTI_DATASRC_OPT=IN_CLAUSE DIRECT_SQL=NOGENSQL SERVER="172.28.193.3" USER="admin" PASSWORD='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; |