CAS

Optimización del Almacenamiento CAS: Dominando el Formato DVR al Cargar Datos

Simon 24/05/2023 6 vistas

En los entornos SAS© Viya, la gestión de la RAM es crítica. A medida que los volúmenes de datos aumentan, se vuelve imperativo utilizar estrategias de almacenamiento inteligentes. Uno de los métodos más eficaces es el uso del parámetro deafaultmemoryFormat="DVR" (Duplicate Value Reduction), que reduce significativamente el tamaño de las tablas en memoria al comprimir los valores repetidos.

Sin embargo, aplicar este formato al cargar datos desde una biblioteca SAS© clásica (como WORK) a CAS puede ser técnicamente confuso. Este artículo explora las limitaciones de los métodos clásicos y presenta la solución óptima.

El Desafío: Cargar Datos SAS© a CAS con DVR

El enfoque estándar para cargar una tabla SAS© (ubicada en el Compute Server) al servidor CAS generalmente implica el uso de PROC CASUTIL.

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

El problema es que la instrucción LOAD DATA de PROC CASUTIL no ofrece una opción nativa para definir el deafaultmemoryFormat. Por lo tanto, la tabla se carga con el formato predeterminado, consumiendo más memoria de la necesaria.

La Falsa Buena Idea: Carga en Dos Pasos

Frente a esta limitación, una solución comúnmente intentada consiste en:

  1. Cargar la tabla normalmente (formato estándar).

  2. Usar la acción table.copyTable para crear una copia comprimida en DVR.

  3. Eliminar la tabla original.

Aunque funcional, este método es ineficiente ("torpe"). Duplica temporalmente el uso de memoria y aumenta innecesariamente las E/S (I/O).

La Solución Óptima: La Instrucción UPLOAD en PROC CAS

Para cargar datos directamente desde el entorno SAS© (Compute Server) a CAS aplicando el formato DVR en un solo paso, la mejor práctica es usar la instrucción UPLOAD dentro de PROC CAS.

La instrucción UPLOAD no solo permite transferir el archivo, sino que también ofrece un control granular sobre los parámetros de salida (casout) y las opciones de importación.

Ventajas de este método

  1. Directo: No se necesita tabla temporal.

  2. Compresión DVR: Aplicación inmediata de la reducción de duplicados.

  3. Conversión a VARCHAR: Posibilidad de convertir cadenas de caracteres fijas a VARCHAR sobre la marcha, ofreciendo una reducción adicional del espacio en memoria.

Note :
Ejemplo de Código
Así es como se carga una tabla ubicada en la biblioteca WORK directamente en formato 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;

¿Por qué funciona mejor?

La instrucción UPLOAD en PROC CAS actúa como un puente directo. Al especificar la ruta física del archivo .sas©7bdat (a través de %sysfunc(pathname(work))), se le indica al servidor CAS que lea el archivo y lo estructure inmediatamente según las especificaciones de casout.

La opción varcharConversion es un complemento ideal para DVR. Mientras que DVR comprime los valores repetidos, cambiar al tipo VARCHAR reduce el espacio asignado a las cadenas de caracteres de longitud variable, maximizando así la eficiencia del almacenamiento.

El uso del formato DVR es una palanca poderosa para optimizar su entorno SAS© Viya. Para implementarlo eficazmente a partir de datos SAS© existentes, abandone los pasos intermedios de PROC CASUTIL en favor de la instrucción UPLOAD en PROC CAS. Ganará en rendimiento, simplicidad de código y espacio en memoria.