CAS

Pourquoi (et comment) CAS écrase les performances traditionnelles

Simon 24/03/2021 4 vues

L'inertie est un phénomène puissant. Même parmi les utilisateurs les plus fervents de SAS©, l'adoption de CAS (Cloud Analytic Services), le moteur in-memory de SAS© Viya, suscite parfois des réticences. Pourquoi changer une recette qui fonctionne (Étape DATA, PROC SQL) pour un nouveau paradigme ?

La réponse tient en un mot : Vitesse.

Pour convaincre les "vrais croyants" de SAS© qui hésitent à franchir le pas, rien ne vaut une démonstration par la preuve. Nous avons comparé les performances du moteur SAS© traditionnel (Base SAS©) face aux CAS Actions sur des tâches courantes de manipulation de données.

Note : Les tests suivants ont été réalisés sur un jeu de données de 160 millions de lignes, hébergé sur une architecture virtuelle modeste (5 nœuds).

Note :
1. L'Agrégation (Group By) : Faible Cardinalité
Lorsque vous devez sommer des variables selon quelques groupes (ex: Type d'installation et Ligne de produit), le réflexe est d'utiliser PROC MEANS ou PROC SUMMARY. En CAS, l'équivalent optimisé est l'action simple.summary.

Le Test :

Données : 160 millions de lignes.

Groupes : 8 combinaisons uniques (faible cardinalité).

Le Code Comparé :

SAS© Classique :
1PROC MEANS DATA=mega_corp NOPRINT;
2 VAR revenue expenses;
3 CLASS facilityType productline;
4 OUTPUT OUT=summaryMC SUM=;
5RUN;
Note :
CAS (Action simple.summary) :
1PROC CAS;
2 SIMPLE.summary /
3 inputs={"revenue","expenses"},
4 subSet={"SUM"},
5 TABLE={name="mega_corp", groupBy={"facilityType","productline"}},
6 casout={name="summaryMC", replace=True};
7QUIT;
Résultat SAS
Gain : CAS est environ 20 fois plus rapide.

2. L'Agrégation : Forte Cardinalité

Une critique courante (et souvent datée) suggère que les moteurs in-memory peinent lorsque le nombre de groupes explose. Vérifions cela en augmentant la complexité.

Le Test :

  • Données : 160 millions de lignes.

  • Groupes : 88 000 combinaisons uniques (ID produit, date, unité).

Illustration

3. La Déduplication (Suppression des doublons)

Retirer les doublons est une tâche lourde qui implique souvent un tri coûteux. En SAS© classique, c'est le domaine de la PROC SORT avec l'option NODUPKEY. En CAS, l'action recommandée pour cette tâche a évolué (voir note technique ci-dessous), mais le principe reste le regroupement efficace.

Le Test :

  • Tâche : Garder une ligne unique pour chaque combinaison (Produit, Date, Unité).

  • Clés uniques : 88 000.

Illustration

4. Note Technique Importante : L'évolution vers deduplication.deduplicate

Les techniques évoluent avec les versions de Viya. Bien que l'action simple.groupBy soit très performante, SAS© Viya a introduit une action spécialisée : deduplication.deduplicate.

La bonne nouvelle ? Vous n'avez pas toujours besoin de réapprendre la syntaxe. Si vos données source et cible sont dans CAS, l'utilisation de votre bonne vieille PROC SORT NODUPKEY sera souvent traduite automatiquement par SAS© en action deduplication.deduplicate optimisée. Vous gardez la syntaxe simple, et SAS© s'occupe de la performance.

Le saut vers CAS demande un effort d'apprentissage, notamment pour maîtriser le langage CASL et les CAS Actions. Cependant, pour quiconque traite des volumes de données importants (Big Data), le retour sur investissement en termes de temps de traitement est immédiat et spectaculaire.