Promouvoir une table CAS de portée de session à une portée globale

Lors du chargement de données dans CAS à l'aide de PROC CASUTIL, vous avez le choix entre deux méthodes de chargement de la table: 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.-scope ou global-scope. Ceci est contrôlé par l'option PROMOTE de l'instruction PROC CASUTIL. Les tables 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.-scope ne peuvent être vues que par une seule session CASConnexion temporaire entre un client et le serveur Cloud Analytic Services. Elle alloue des ressources dédiées pour l'exécution distribuée de tâches analytiques et la gestion des tables en mémoire. et sont supprimées du CAS lorsque cette 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. est terminée, alors que les tables Global-scope peuvent être vues publiquement et ne seront pas supprimées lorsque la session CASConnexion temporaire entre un client et le serveur Cloud Analytic Services. Elle alloue des ressources dédiées pour l'exécution distribuée de tâches analytiques et la gestion des tables en mémoire. sera terminée. Exemple de création d'une table 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.-scope Création de la session CASConnexion temporaire entre un client et le serveur Cloud Analytic Services. Elle alloue des ressources dédiées pour l'exécution distribuée de tâches analytiques et la gestion des tables en mémoire. (MYSESSION) et d'une bibliothèque pointant vers une 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. (CASGADATA):
1
2
CAS MYSESSION;
CASLIB _ALL_ ASSIGN;
Chargement de la table dans CAS (table myGAanalytics)
1
2
3
4
proc casutil;
load casdata="myGAanalytics.sashdat" incaslib="LIBCAS"
outcaslib="LIBCAS" casout="myGAanalytics";
run;
viya-table-cas-session-scope 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 :
1
2
3
4
proc casutil;
load casdata="myGAanalytics.sashdat" incaslib="LIBCAS"
outcaslib="LIBCAS" casout="myGAanalytics" promote;
run;
Il est également possible de soumettre une "cas action" pour charger cette table :
1
2
3
4
proc cas;
table.loadTable / path='myGAanalytics.sashdat', caslib='LIBCAS', casOut={name='myGAanalytics', caslib='LIBCAS',
replace=false, promote=true};
run;
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;
cas-table-promote-dans-sas-viya Maintenant que cette table est promue, elle sera chargé et accessible en mémoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
à 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émoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
, comme le montre cette copie d'écran de SASEnvironmentManager : cas-viya-table-promote-et-session-globale

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 :
1
2
3
proc casutil incaslib="LIBCAS" outcaslib="LIBCAS";
promote casdata="myGAanalytics" casout="myGAanalytics";
quit;

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 :
1
2
3
proc casutil incaslib="LIBCAS" outcaslib="LIBCAS";
promote casdata="myGAanalyticsNEW" casout="myGAanalytics";
quit;
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
proc cas;
action table.dropTable /
caslib="libcas"
name="myGAanalytics";

action table.promote /
sourceCaslib="libcas"
name = "myGAanalyticsNew"
targetCaslib = "libcas"
target = "myGAanalytics";

action table.tableinfo /
caslib="libcas";
run;
run;

Nicolas Housset

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.