Stop au Gaspillage ! Réduisez la Taille de vos Tables SAS jusqu'à 90% en une Ligne de Code
Stéphanie 14 Aufrufe
Schwierigkeitsgrad
Confirmé
Veröffentlicht am :
Expertenrat
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 !
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.