Promouvoir une table CAS de portée de session à une portée globale
Publié le 05 Feb 2019 Mis à jour le 03 Feb 2021
Cet article en deux mots :
Découvrez comment optimiser la persistance de vos données dans SAS Viya en gérant efficacement la portée des tables CAS. De l'usage de l'option PROMOTE au remplacement stratégique de tables globales via PROC CAS, ce guide technique vous livre les clés pour fluidifier vos chargements.
Si je termine ma sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya., via le code ci-dessous, ma table n'est plus accessible :
1 2
CAS MYSESSION DISCONNECT; CAS MYSESSION TERMINATE;
Exemple de création d'une table Global-scope :
1 2
CAS MYSESSION; libname LIBCAS cas caslib="LIBCAS";
Pour charger une table dans CAS est la rendre "globale" il faut ajouter l'option promote :
Vérifions maintenant la portée de cette table, en utilisant le code ci-dessous :
1 2 3
proc casutil; list tables incaslib="LIBCAS"; run;
Maintenant que cette table est promue, elle sera chargé et accessible en mémoire à chaque création d'un libname sur la caslibEspace de stockage logique dans SAS Viya. Elle définit l’accès aux données (source physique) et leur chargement en mémoire (serveur CAS) pour permettre des analyses distribuées haute performance..
Après avoir terminé sa sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya., la table est toujours en mémoire, comme le montre cette copie d'écran de SASEnvironmentManager :
Promouvoir une table CAS de niveau sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya. en table CAS global
Le code ci-dessous permet de promouvoir une table CAS de votre sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya. utilisateur vers une table globale :
Est-il possible de remplacer une table Global-scope ?
Les tables CAS à portée globale (Global-scope) ne peuvent pas être remplacées, vous devez toujours supprimer une table promue avant de la remplacer. (source :DropTable is required to replace a global-scope table)
Si vous essayez de promouvoir une table promue vous pourriez rencontrer le message d'erreur suivant :
NOTE: Executing action 'table.promote'.
ERROR: The target table myGAanalytics of the promotion already exists. Please specify a different name.
ERROR: The action stopped due to errors.
Ma table myGAanalytics était déjà une table CAS globale. Cette erreur est survenue lorsque j'ai voulu remplacer cette table CAS global par une table de portée sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya., via le code ci-dessous :
Plutôt que de supprimer la table de portée globale (myGAanalytics), puis de charger la nouvelle table CAS , vous pouvez utiliser une proc CAS pour supprimer la table de portée globale; charger la nouvelle table (myGAanalyticsNEW), puis promouvoir cette table.
Cela permet de réduire le temps nécessaire pour que la nouvelle table soit disponible.
Voici un exemple :
Suppression de la table CAS promue myGAanalytics.
Promote de la table myGAanalyticsNew en renommage en myGAanalytics
Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.