Dans l'écosystème SAS Viya, la gestion de la mémoire est le nerf de la guerre. Lorsque l'on manipule des volumes de données massifs dans Cloud Analytic ServicesMoteur d'exécution in-memory de SAS Viya. Il assure le traitement massivement parallèle (MPP) et distribué des données pour optimiser les performances analytiques et le passage à l'échelle. (CAS), il est indispensable de pouvoir interroger l'environnement pour savoir exactement ce qui est chargé, quelle place cela occupe et comment les données sont réparties.
Cet article se concentre sur une opération fondamentale : Retrieving Table Information (récupérer les informations d'une table). Pour accomplir cela, nous allons utiliser PROC CAS et faire appel à deux actions essentielles de l'ensemble Table : tableInfo et tableDetails.
Le point d'entrée : L'instruction PROC CAS
L'instruction PROC CAS est l'interface en ligne de commande qui vous permet de programmer et de planifier des actions CASLes actions CAS sont des unités de travail exécutées par le serveur Cloud Analytic Services pour manipuler, transformer ou analyser des données en mémoire de manière distribuée et parallèle. directement depuis votre client SAS.
Contrairement à des procédures classiques, une fois que PROC CAS est exécutée, elle reste active jusqu'à ce qu'elle rencontre :
- Une étape
DATA - Une autre étape
PROC - L'instruction
QUIT - Une erreur bloquante
Note : Les instructions globales, le code macro SAS et les instructions RUN ne mettent pas fin à la procédure.1. Vue d'ensemble avec l'action tableInfo
L'action table.tableInfo est votre premier niveau d'investigation. Elle permet d'afficher les métadonnéesInformations décrivant les données, les utilisateurs et les ressources dans SAS Viya. Elles assurent la traçabilité, la sécurité et la gouvernance au sein de l'architecture distribuée. de base d'une table CAS (nom, libellé, nombre de lignes, nombre de colonnes, etc.).
Paramètres clés :
name(requis) : Le nom de la table cible.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.: Spécifie la bibliothèque source. Si ce paramètre est omis, l'action interroge 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. active.quiet: Paramétré surTRUE, il permet d'éviter la génération d'une erreur si la table n'existe pas (le statut renvoyé sera simplement "OK"). Idéal pour les scripts de vérification.wildIgnore: Lorsqu'il est défini surFALSE, les caractères%et_sont interprétés comme des jokers. Par exemple, cherchername="%2026"listera toutes les tables se terminant par 2026.
2. Plongée au cœur de l'architecture avec tableDetails
Si tableInfo vous donne la carte d'identité de la table, table.tableDetails vous en donne l'IRM complet. Cette action est indispensable pour les administrateurs et les ingénieurs de données qui ont besoin de comprendre l'empreinte mémoire et la distribution physique de la table sur les nœuds du clusterEnsemble de nœuds (machines) interconnectés, gérés par Kubernetes, qui collaborent pour exécuter les microservices et le moteur CAS de SAS Viya, assurant haute disponibilité et passage à l'échelle..
Paramètres clés :
| Paramètre | Description |
|---|---|
name |
Requis. Le nom de la table à analyser. |
level |
Définit le niveau d'agrégation des résultats. Les valeurs possibles sont "NODE", "PARTITION", ou "SUM" (valeur par défaut). |
showMem |
Si TRUE (par défaut), le rapport inclut les métriques critiques de mémoire : taille des données en octets, mémoire mappée (mapped), mémoire non mappée et mémoire allouée. |
perNode |
Limite le nombre maximum de blocs rapportés par nœud (par défaut : 100). Très utile pour éviter de surcharger les résultats sur des tables massives très fragmentées. |
3. Mapped vs Unmapped Memory : Ne saturez plus votre RAM à l'aveugle
Lorsque vous activez showMem=TRUE, les résultats crachent plusieurs colonnes de métriques en octets. Deux d'entre elles sont absolument cruciales pour l'architecture de vos flux de données : la mémoire "mappée" et "non mappée".
- Mapped Memory (Mémoire mappée) : C'est le Graal de l'optimisation CAS. Cela signifie que votre table en mémoire est directement adossée à un fichier physique sur le disque (généralement un fichier SASHDATSASHDAT est le format de fichier propriétaire de SAS Viya optimisé pour Cloud Analytic Services (CAS). Il permet un chargement ultra-rapide des données en mémoire via un accès direct (memory-mapping).). CAS agit de manière intelligente : il ne charge dans la RAM physique que les blocs de données dont il a besoin à l'instant T pour un calcul, et laisse le système d'exploitation gérer le reste. Si le nœud manque de mémoire, il peut purger ces blocs de la RAM sans perdre la donnée.
- Unmapped Memory (Mémoire non mappée) : La table vit à 100 % dans la RAM volatile. C'est ce qui se produit lorsque vous importez un fichier CSV, que vous interrogez une base de données externe via ODBC/JDBC, ou que vous générez une table intermédiaire avec une étape DATA. Ces données consomment activement la RAM de votre clusterEnsemble de nœuds (machines) interconnectés, gérés par Kubernetes, qui collaborent pour exécuter les microservices et le moteur CAS de SAS Viya, assurant haute disponibilité et passage à l'échelle.. Si le nœud crash ou redémarre, la donnée disparaît instantanément.
L'astuce d'architecture : Si vous remarquez qu'une table massive consomme exclusivement de l' Unmapped Memory, il est souvent judicieux de la sauvegarder d'abord en SASHDATSASHDAT est le format de fichier propriétaire de SAS Viya optimisé pour Cloud Analytic Services (CAS). Il permet un chargement ultra-rapide des données en mémoire via un accès direct (memory-mapping). sur le disque, puis de la recharger en mémoire. Vous basculerez ainsi sur de la Mapped Memory, libérant de la pression sur la RAM de votre clusterEnsemble de nœuds (machines) interconnectés, gérés par Kubernetes, qui collaborent pour exécuter les microservices et le moteur CAS de SAS Viya, assurant haute disponibilité et passage à l'échelle..
Exemple d'implémentation complet
Voici un script type illustrant la récupération des informations pour une table nommée DONNEES.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Auteur : Nicolas Housset - nicolas-housset.fr
Description : Retrieving Table Information via PROC CAS
========================================================================= */
proc cas;
/* 1. Récupération des métadonnées de base */
table.tableInfo /
name="DONNEES";
/* 2. Récupération des détails physiques et de l'empreinte mémoire */
table.tableDetails /
name="DONNEES"
level="SUM"
showMem=TRUE;
quit;
Que vérifier dans les résultats ?
Lors de l'exécution de ce script, portez une attention particulière aux résultats de tableDetails. La distinction entre la mémoire allouée et la taille réelle des données vous donnera de précieux indices sur le niveau de fragmentation de vos blocs et sur la nécessité éventuelle de recharger ou de compresser votre table.






