CAS

Charger et Décharger des Données SQL Server dans SAS Viya CAS

Simon 26/12/2023 6 vues

L'automatisation des flux de données entre une base de données relationnelle (comme SQL Server) et l'environnement SAS© Viya Cloud Analytic Services (CAS) est une tâche courante pour les ingénieurs de données. Cependant, la gestion de la mémoire CAS nécessite une approche spécifique pour rafraîchir les tables quotidiennement sans erreur.

Cet article détaille la procédure correcte pour décharger (unload) et recharger (load) des données via une connexion ODBC, en évitant les erreurs de connexion fréquentes.

Illustration

Le Problème : Confusion entre Modification et Déchargement

Une erreur fréquente lors de la tentative de rafraîchissement des données est l'utilisation incorrecte des instructions PROC CASUTIL.

Par exemple, tenter d'utiliser l'instruction ALTERTABLE pour décharger une table est une mauvaise pratique qui échouera. De même, lancer une procédure de chargement sans avoir explicitement ouvert une session CAS ou défini la librairie source entraînera l'erreur classique : 

ERROR: A connection to the Cloud Analytic Services session could not be made.

La Solution : Un Workflow en 3 Étapes

Pour automatiser ce processus (par exemple pour un traitement journalier), il faut suivre une séquence précise : établir la connexion, nettoyer la mémoire CAS, puis recharger les nouvelles données.

Étape 1 : Établir la Connexion et la Session

Avant toute manipulation dans CAS, vous devez définir votre librairie source (via ODBC) et initier votre session CAS.

1/* 1. Définition de la connexion à la base SQL Server */
2LIBNAME sql_src ODBC NOPROMPT="dsn=MonDSN;Trusted_Connection=yes" SCHEMA=DBO;
3 
4/* 2. Démarrage de la session CAS et définition de la caslib par défaut */
5cas casauto sessopts=(caslib="casuser");

Étape 2 : Décharger la Table (Unload)

Pour rafraîchir une table, il faut d'abord la retirer de la mémoire vive du serveur CAS. L'instruction correcte n'est pas ALTERTABLE, mais DROPTABLE. Cela supprime la table de la mémoire sans toucher au fichier source physique si celui-ci est persistant.

1PROC CASUTIL;
2 /* Suppression de l'ancienne version de la table en mémoire */
3 DROPTABLE CASDATA="MaTable_Cible" INCASLIB="casuser" QUIET;
4QUIT;
Note : L'option QUIET permet d'éviter une erreur si la table n'existe pas encore (lors de la première exécution).

Étape 3 : Charger les Données (Load)

Pour charger des données depuis une librairie SAS© (définie à l'étape 1) vers CAS, utilisez la syntaxe LOAD DATA= (chargement côté client). L'option PROMOTE est cruciale si vous souhaitez que la table reste accessible aux autres utilisateurs ou sessions après la fin de votre exécution.

1PROC CASUTIL;
2 /* Chargement des données depuis la source SQL vers CAS */
3 LOAD DATA=sql_src.MaTable_Source
4 CASOUT="MaTable_Cible"
5 OUTCASLIB="casuser"
6 PROMOTE;
7
8 /* Vérification du contenu */
9 CONTENTS CASDATA="MaTable_Cible";
10RUN;

Résumé des Bonnes Pratiques

  1. Vérifiez votre version : Assurez-vous que votre syntaxe correspond à votre version de SAS© Viya (ce code est valide pour la V.03.05 et ultérieures).

  2. Utilisez DROPTABLE : Pour vider la mémoire avant un rechargement.

  3. Privilégiez LOAD DATA= : Pour importer des données définies par un LIBNAME.

  4. N'oubliez pas PROMOTE : Sans cela, votre table disparaîtra à la fin de votre session.