CAS

Optimisation du stockage CAS : Maîtriser le format DVR lors du chargement de données

Simon 24/05/2023 7 views

Dans les environnements SAS© Viya, la gestion de la mémoire RAM est critique. À mesure que les volumes de données augmentent, il devient impératif d'utiliser des stratégies de stockage intelligentes. L'une des méthodes les plus efficaces est l'utilisation du paramètre deafaultmemoryFormat="DVR" (Duplicate Value Reduction), qui permet de réduire considérablement la taille des tables en mémoire en compressant les valeurs répétées.

Cependant, appliquer ce format lors du chargement de données depuis une bibliothèque SAS© classique (comme WORK) vers CAS peut s'avérer techniquement déroutant. Cet article explore les limitations des méthodes classiques et présente la solution optimale.

Le Défi : Charger des données SAS© vers CAS avec DVR

L'approche standard pour charger une table SAS© (située sur le Compute Server) vers le serveur CAS consiste généralement à utiliser PROC CASUTIL.

1/* Méthode standard - ne permet pas l'optimisation DVR directe */
2PROC CASUTIL;
3 load DATA=maTableWork casout="maTableCAS";
4QUIT;

Le problème réside dans le fait que l'instruction LOAD DATA de PROC CASUTIL ne propose pas d'option native pour définir le deafaultmemoryFormat. Par conséquent, la table est chargée avec le format par défaut, consommant plus de mémoire que nécessaire.

La fausse bonne idée : Le chargement en deux étapes

Face à cette limitation, une solution de contournement souvent tentée consiste à :

  1. Charger la table normalement (format standard).

  2. Utiliser l'action table.copyTable pour créer une copie compressée en DVR.

  3. Supprimer la table originale.

Bien que fonctionnelle, cette méthode est inefficace ("clunky"). Elle double temporairement l'utilisation de la mémoire et augmente les entrées/sorties inutilement.

La Solution Optimale : L'instruction UPLOAD dans PROC CAS

Pour charger des données directement depuis l'environnement SAS© (Compute Server) vers CAS tout en appliquant le format DVR en une seule étape, la meilleure pratique est d'utiliser l'instruction UPLOAD au sein de la PROC CAS.

L'instruction UPLOAD permet non seulement de transférer le fichier, mais offre également un contrôle granulaire sur les paramètres de sortie (casout) et les options d'importation.

Avantages de cette méthode

  1. Directe : Pas besoin de table temporaire.

  2. Compression DVR : Application immédiate de la réduction des doublons.

  3. Conversion VARCHAR : Possibilité de convertir les chaînes de caractères fixes en VARCHAR à la volée, offrant une réduction supplémentaire de l'espace mémoire.

Note :
Exemple de code
Voici comment charger une table située dans la bibliothèque WORK directement en format DVR :
1PROC CAS;
2 /* Nettoyage préalable si nécessaire */
3 ACTION TABLE.droptable / name="somedata" quiet=true;
4
5 /* Chargement optimisé */
6 upload /
7 /* Récupération dynamique du chemin physique de la table SAS */
8 path="%sysfunc(pathname(work))/somedata.sas7bdat"
9
10 /* Configuration de la table de sortie CAS */
11 casout={
12 caslib="casuser"
13 name="somedata"
14 promote=true, /* Rendre la table globale */
15 memoryformat="DVR", /* Activation de la compression DVR */
16 replication=0 /* Ajuster la réplication selon les besoins */
17 }
18
19 /* Options d'importation supplémentaires */
20 importoptions={
21 filetype="BASESAS",
22 varcharConversion=17 /* Convertit les CHAR > 16 octets en VARCHAR */
23 }
24 ;
25QUIT;

Pourquoi cela fonctionne-t-il mieux ?

L'instruction UPLOAD dans PROC CAS agit comme un pont direct. En spécifiant le chemin physique du fichier .sas©7bdat (via %sysfunc(pathname(work))), vous demandez au serveur CAS de lire le fichier et de le structurer immédiatement selon vos spécifications casout.

L'option varcharConversion est un complément idéal au DVR. Alors que le DVR compresse les valeurs répétées, le passage au type VARCHAR réduit l'espace alloué aux chaînes de caractères de longueur variable, maximisant ainsi l'efficacité du stockage.

L'utilisation du format DVR est un levier puissant pour optimiser votre environnement SAS© Viya. Pour l'implémenter efficacement depuis des données SAS© existantes, abandonnez les étapes intermédiaires de PROC CASUTIL au profit de l'instruction UPLOAD dans PROC CAS. Vous gagnerez en performance, en simplicité de code et en espace mémoire.