Projet IDAPA

Accueil > Ressources > Outils pour SAS > Appliquer des traitements statistiques à l’aide du logiciel SAS sur une base (...)

Appliquer des traitements statistiques à l’aide du logiciel SAS sur une base de données distante

mardi 6 janvier 2009, par Gwenaelle Breton

Première étape : Créer un Tunnel SSH

Afin d’accéder à un serveur distant (ici daniel.iut.univ-metz.fr), il faut « creuser un tunnel » entre notre connexion et ce serveur pour y faire passer les informations de manière sécurisée.

Il faut donc avoir les informations suivantes :

  • Le port de départ, qui va être ouvert sur notre poste client (l’entrée du tunnel)
  • La machine qui va faire le travail de tunnel (daniel.iut.univ-metz.fr)
  • La machine que l’on veut atteindre (le bout du tunnel)
  • Le numéro de port de destination (qui dépend du type de service que l’on veut
    atteindre)

Nous allons mettre en place ce tunnel sous Windows à l’aide de l’application PuTTY.
PuTTY est un émulateur de terminal doublé d’un client pour plusieurs protocoles dont SSH
(sécurisé).

  1. On entre le nom du serveur que l’on veut utiliser
  2. On met le numéro de port (ici 3306), puis la destination avec en fin de nom le numéro de port du service.
  3. On peut maintenant maintenant se connecter sur le compte à partir duquel on veut récupérer les données

Deuxième étape : Connecter la base MySQL via ODBC

ODBC signifie Open DataBase Connectivity. Il s’agit d’un format défini par Microsoft
permettant la communication entre des clients bases de données fonctionnant sous
Windows et les Systèmes de Gestion de Bases de Données du marché.

La technologie ODBC permet d’interfacer de façon standard une application à n’importe
quel serveur de bases de données, à partir du moment où celui-ci possède un driver
ODBC.

Il faut donc connecter ODBC à notre tunnel et définir la source de données pour le pilote
MySQL.

  1. Création de la source données utilisateur :
  2. Connexion au tunnel :

On défini un nom pour la source de données, le serveur local (machine locale), puis les
identifiants de la base de données MySQL.

  1. On donne le port de notre tunnel :
  2. Nous avons maintenant accès aux bases de données :

Troisième étape : Connecter SAS à ODBC

ODBC, qui signifie Open DataBase Connectivity, est une interface standard fournissant
une API commune pour accéder à des bases de données.
Beaucoup de logiciels adhèrent à ce standard, permettant à ses utilisateurs d’accéder aux données créées par d’autres logiciels.

Trois composantes sont nécessaires à la mise en oeuvre d’ODBC :

  • l’application cliente,
  • le gestionnaire de pilotes/drivers ODBC (ODBC driver manager),
  • le pilote/driver ODBC.

Ce gestionnaire de drivers ODBC, permet de gérer l’interaction entre l’application cliente et le(s) driver(s) ODBC.

Dans notre cas, le Système SAS est l’application cliente. L’utilisateur SAS veut accéder
à des données non-SAS. Il doit avoir à disposition le driver ODBC du produit qu’il veut
accéder. Au niveau du Système SAS, il doit avoir le module SAS/ACCESS® to ODBC.

Trois types de sources de données existent dans ODBC :

  • DSN Utilisateur (User DSN) : ces sources de données sont spécifiques à un ordinateur (locales) et ne peuvent être utilisées que par l’utilisateur en cours.
  • DSN Système (System DSN) : ces sources de données sont spécifiques à un ordinateur (locales), et non associées (dédiées) à un utilisateur. Le système, ou tout utilisateur disposant d’autorisations d’accès, peut utiliser une source de données définie avec un DSN système.
  • DSN Fichier (File DSN) : il s’agit de sources de données basées sur des fichiers qui
    peuvent être partagées par tous les utilisateurs disposant des mêmes pilotes installés et
    qui ont donc accès à la base de données. Il n’est pas nécessaire que ces sources de
    données soient associées (dédiées) à un utilisateur ou spécifiques à un ordinateur
    (locales).

Pour tester une source de données ODBC dans SAS (après avoir validé qu’elle
fonctionnait dans un monde non-SAS), il suffit d’exécuter le code suivant au sein de SAS :

libname test odbc prompt=yes ;

On peut générer un modèle de pass-through en passant par ce query :

  • lancer le Système SAS
  • taper "query" dans la barre de commandes
  • menu "Tools" -> "Switch Access Mode" -> "ODBC"
  • une fenêtre "Sélectionner la source de données " apparaît, il faut donc choisir la source de données ODBC que l’on veut accéder qui est soit une source de données fichier (DSN Fichier) ou machine (DSN Système ou DSN Utilisateur).

Une fois la source choisie, dans la fenêtre "SQL Query Tables", la List Box "Available
Tables" doit contenir des éléments.

  1. sélectionner une table parmi les tables disponibles, et la faire basculer vers la List Box "Selected Tables"
  2. cliquer sur "OK"
  3. la fenêtre "SQL Query Columns" apparaît avec la liste des variables disponibles dans la List Box "Available Columns" ; les 2 premières lignes correspondent à un "select count(*)" et à un "select *"
  4. sélectionner une colonne parmi les colonnes disponibles, et la faire basculer vers la List Box "Selected Columns"
  5. menu "Tools" -> "Show Query…"
  6. la fenêtre "SQL Query" apparaît avec la requête générée bouton "Save Query" -> "Save as External File with Create Table."
  7. une fenêtre apparaît demandant le nom de la bibliothèque de stockage et le nom de la table à créer ; mettre par exemple WORK pour la bibliothèque et TEST pour la table
  8. cliquer sur "OK"
  9. la fenêtre "Save As" apparaît ; donner un nom de fichier et éventuellement un chemin pour l’enregistrement
  10. cliquer sur "Enregistrer"
  11. bouton "Goback"
  12. menu "File" -> "Close"
  13. cliquer sur "OK" pour confirm er
  14. dans l’ "Editor", ouvrir le fichier précédemment créé
    rajouter l’instruction "quit ;" à la fin et exécuter

On retrouve alors un modèle réutilisable de pass -through pour ODBC.

Driver ODBC

En ce qui concerne le driver ODBC, la version 8 apporte un changement au niveau du
protocole utilisé en local. En effet, le protocole TCP est utilisé désormais à la fois pour les
connexions locales et distantes.

Un paramétrage différent est donc nécessaire pour les sources ODBC locales. Dans
l’onglet "Servers", le "Server Name" sera le nom d’un service (combinaison service/port
déclarée dans le fichier "services" du poste client).