Le passage de SAS© 9.4 à SAS© Viya™ s'accompagne souvent d'une courbe d'apprentissage concernant la gestion des données en mémoire. Une confusion fréquente survient lors de la transition de PROC SQL vers PROC FEDSQL pour interagir avec des tables chargées dans les bibliothèques CAS (CASLIBs).
Si vous avez déjà rencontré l'erreur "BASE driver, schema name... was not found", cet article vous explique pourquoi cela se produit et comment corriger votre code.
Imaginons que vous travaillez sur un environnement SAS© Viya™. Vous avez défini une CASLIB basée sur un chemin physique (path-based) et vous avez chargé une table en mémoire.
Voici la configuration typique :
Définition de la CASLIB et du Libref :
Chargement des données en mémoire (In-Memory) :
Vous utilisez PROC CASUTIL pour charger une table (par exemple test.sashdat) dans la mémoire du serveur CAS.
Jusqu'ici, tout fonctionne. La table est accessible en mémoire sous le nom mycas.test.
Pour effectuer une agrégation (comme un GROUP BY), vous décidez d'utiliser PROC FEDSQL, qui est l'implémentation standard du SQL pour le moteur CAS.
Vous tentez d'exécuter le code suivant :
C'est ici que le système renvoie l'erreur bloquante :
L'erreur ne provient pas d'un problème de configuration de la bibliothèque ni d'un fichier manquant. Elle est due à la manière dont PROC FEDSQL communique avec le serveur CAS.
Contrairement à une procédure SAS© classique qui s'exécute localement, PROC FEDSQL a besoin de savoir explicitement dans quelle session CAS elle doit opérer pour accéder aux tables en mémoire. Si aucune session n'est référencée, la procédure tente de trouver la table via le moteur local (BASE driver), qui ne connaît pas le schéma "MYCAS" défini sur le serveur distant.
Pour corriger ce problème, vous devez faire deux choses :
Vous assurer qu'une session CAS est active.
Indiquer à PROC FEDSQL d'utiliser cette session via l'option SESSREF.
Voici le code corrigé :
Ce qu'il faut retenir
L'ajout de l'option sessref=NomDeVotreSession est indispensable lorsque vous manipulez des tables CAS directement avec FedSQL. Cela crée le pont nécessaire entre votre code et les données résidant en mémoire sur le cluster Viya™.