Stop au Gaspillage ! Réduisez la Taille de vos Tables SAS jusqu'à 90% en une Ligne de Code
Stéphanie 14 vistas
Nivel de dificultad
Confirmé
Publicado el :
Consejo del experto
Stéphanie
La compression n'est pas une formule magique, c'est un arbitrage stratégique entre l'économie de stockage (I/O) et la consommation de votre processeur (CPU). Pour une optimisation parfaite, réservez cette technique à vos volumineuses tables historiques, mais évitez de compresser vos petites tables de référence (lookup tables) sous peine de dégrader inutilement vos temps d'exécution. Enfin, l'astuce incontournable : si vos tables compressées subissent des suppressions régulières, n'oubliez jamais d'y associer l'option REUSE=YES pour que SAS puisse recycler l'espace physique libéré !
Saviez-vous qu'il existe une méthode simple et native pour compresser vos datasets sans perdre de données ? Que vous manipuliez des chaînes de caractères répétitives ou des variables numériques complexes, comprendre la différence entre la compression CHAR et BINARY est essentiel. Dans cet article, avec les conseils de Nicolas, nous allons voir comment transformer vos "énormes" tables en fichiers légers et agiles.
La compression permet de réduire l'espace disque en éliminant les espaces vides (blanks) et les répétitions de motifs binaires.
Économie d'espace : Idéal pour les environnements de stockage limités ou coûteux (Cloud).
Performance I/O : Moins de données sur le disque signifie moins de temps passé par le système à lire le fichier (si votre CPU est assez puissant pour décompresser à la volée).
1. La Compression de Caractères (COMPRESS=CHAR ou YES)
C'est la méthode la plus courante. Elle est extrêmement efficace si votre table contient de nombreuses colonnes de type CHARACTER avec beaucoup d'espaces vides ou des valeurs répétées.
Exemple concret :
Imaginez une table de logs où la colonne "Ville" est définie sur 100 caractères, mais contient souvent des noms courts ou des valeurs manquantes.
/* Table SANS compression */
data work.utilisateurs_brut;
length Nom $50 Ville $100;
do i = 1 to 100000;
Nom = "Dupont";
Ville = "Paris"; /* Beaucoup d'espaces perdus ici */
output;
end;
run;
/* Table AVEC compression CHAR */
data work.utilisateurs_optimise (compress=char);
set work.utilisateurs_brut;
run;
/* Vérification de la taille dans la log */
1
/* Table SANS compression */
2
DATA work.utilisateurs_brut;
3
LENGTH Nom $50 Ville $100;
4
DO i = 1 to 100000;
5
Nom = "Dupont";
6
Ville = "Paris"; /* Beaucoup d'espaces perdus ici */
7
OUTPUT;
8
END;
9
RUN;
10
11
/* Table AVEC compression CHAR */
12
DATA work.utilisateurs_optimise (compress=char);
13
SET work.utilisateurs_brut;
14
RUN;
15
16
/* Vérification de la taille dans la log */
Résultat : Dans ce scénario, vous pouvez observer une réduction de taille allant jusqu'à 95%.
2. La Compression Binaire (COMPRESS=BINARY)
Si votre dataset est principalement composé de variables numériques (données financières, capteurs, scores), la compression CHAR sera peu efficace. C’est ici qu’intervient COMPRESS=BINARY. Elle analyse les motifs binaires des données pour compacter les nombres.
/* Création d'une table avec de gros volumes de données numériques */
data work.stats_ventes (compress=binary);
do i = 1 to 1000000;
CA_Journalier = 1500.50;
Code_Magasin = 101;
Flag_Promo = 0;
output;
end;
run;
1
/* Création d'une table avec de gros volumes de données numériques */
2
DATA work.stats_ventes (compress=binary);
3
DO i = 1 to 1000000;
4
CA_Journalier = 1500.50;
5
Code_Magasin = 101;
6
Flag_Promo = 0;
7
OUTPUT;
8
END;
9
RUN;
Conseil : La compression BINARY consomme un peu plus de CPU, mais sur des tables massives de scores prédictifs, c'est un game-changer.
3. Comment automatiser la compression ?
Plutôt que de le spécifier dans chaque étape DATA, vous pouvez l'activer globalement pour votre session de travail ou pour une bibliothèque entière.
Le choix de l'option COMPRESS dépend de la nature de vos données. Pour du texte, privilégiez CHAR. Pour des chiffres, foncez sur BINARY. En adoptant ce réflexe simple, vous passerez pour un expert de l'optimisation auprès de vos administrateurs système !
Aviso importante
Los códigos y ejemplos proporcionados en WeAreCAS.eu son con fines educativos. Es imperativo no copiarlos y pegarlos ciegamente en sus entornos de producción. El mejor enfoque es comprender la lógica antes de aplicarla. Recomendamos encarecidamente probar estos scripts en un entorno de prueba (Sandbox/Dev). WeAreCAS no acepta ninguna responsabilidad por cualquier impacto o pérdida de datos en sus sistemas.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.