Dans l'architecture de SAS© Viya™, la gestion de la mémoire et des sessions est un concept clé. Il arrive fréquemment qu'un utilisateur charge des données ou crée une librairie (caslib) dans une session (appelons-la Session A), et souhaite ensuite y accéder depuis une nouvelle session (Session B).
Cependant, une tentative directe d'assignation de la librairie existante dans la nouvelle session échoue souvent à montrer les données attendues. Pourquoi ce cloisonnement existe-t-il et comment le contourner ?
Comprendre la Portée (Scope)
Le nœud du problème réside dans la portée de votre caslib et des tables qu'elle contient. Par défaut, lorsque vous créez une caslib ou chargez une table en mémoire sans configuration spécifique, celle-ci possède souvent une portée de session (session scope).
Portée de Session : Les données sont privées. Elles "appartiennent" exclusivement à la session qui les a créées (Session A). La Session B ne peut ni les voir, ni les utiliser, même si vous tentez de redéfinir la librairie.
Portée Globale : Les données sont partagées. Elles sont accessibles à toutes les sessions qui ont les droits suffisants pour accéder au serveur CAS.
La Solution : La Promotion
Il n'est pas possible de simplement "connecter" la Session B à l'espace mémoire privé de la Session A. Pour rendre les données accessibles à la Session B (et aux autres), vous devez changer le statut de vos données.
La méthode consiste à utiliser l'action promote.
Comment procéder ?
Au lieu de chercher à réassigner la librairie entière, vous devez explicitement promouvoir les tables spécifiques que vous souhaitez partager.
Dans la Session A (propriétaire) : Utilisez l'action de promotion sur votre table. Cela déplace la table de la mémoire locale de la session vers la mémoire globale du serveur.
Dans la Session B : Une fois la table passée en portée globale (global scope), elle devient visible et accessible instantanément, sans avoir besoin de recharger les données depuis le disque.
Si vous ne voyez pas vos tables depuis une nouvelle session, ne cherchez pas à "réparer" la définition de la librairie. Posez-vous la question de la portée de vos données.
Si la table est en session scope, elle est invisible pour les autres.
Pour la partager, vous devez la promouvoir (promote) en global scope.