CAS

Pourquoi (et comment) CAS écrase les performances traditionnelles

Simon 59 Aufrufe
Schwierigkeitsgrad
Confirmé
Veröffentlicht am :
Michael

Expertenrat

Michael

La puissance de SAS Viya ne réside pas seulement dans sa vitesse brute, mais dans sa capacité à moderniser votre existant sans effort. L'astuce à retenir est que le moteur CAS agit souvent comme un traducteur intelligent : il convertit silencieusement vos instructions classiques, comme le PROC SORT NODUPKEY, en actions in-memory optimisées (deduplicate). Vous conservez ainsi votre syntaxe habituelle tout en bénéficiant instantanément de la performance du calcul distribué.

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é).

Pourquoi (et comment) CAS écrase les performances traditionnelles -

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.

Pourquoi (et comment) CAS écrase les performances traditionnelles -

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.