Le paramètre doESP=TRUE (Event Stream Processing) permet à l'action d'optimiser les calculs en utilisant le partitionnement et l'ordonnancement existants de votre table d'entrée. Pour que cela fonctionne efficacement, la variable id doit être spécifiée comme le dernier paramètre groupBy et également dans le paramètre orderBy. Cette optimisation est cruciale pour les grands ensembles de données et les analyses en temps quasi réel.
Comment puis-je optimiser les performances de l'action 'aggregate' en tirant parti du partitionnement et de l'ordonnancement des données?
Optimisation via le moteur doESP
Exemple de Code Additionnel
| 1 | <pre>PROC CAS; |
| 2 | /* 1. Chargement de la table avec partitionnement physique */ |
| 3 | TABLE.loadTable / |
| 4 | path="sensor_data.sashdat", |
| 5 | caslib="Public", |
| 6 | casout={name="sensors", |
| 7 | replace=true, |
| 8 | partitionBy={"sensor_id"}, /* Partitionnement */ |
| 9 | orderBy={"sensor_id", "timestamp"}}; /* Ordonnancement */ |
| 10 | /* 2. Agrégation optimisée via doESP */ |
| 11 | aggregation.aggregate / |
| 12 | TABLE={name="sensors", |
| 13 | groupBy={"sensor_id"}, /* Doit correspondre au partitionBy */ |
| 14 | orderBy={"timestamp"}}, /* Doit correspondre au orderBy */ |
| 15 | varSpecs={ |
| 16 | {name="temperature", summarySubset={"MEAN", "MAX"}} |
| 17 | }, |
| 18 | casOut={name="sensor_summary", replace=true}, |
| 19 | doESP=TRUE; /* Activation du moteur haute performance */ |
| 20 | QUIT;</pre> |
Exemples pour l'action aggregate
Agrégation globale des ventes
Cet exemple montre la réduction massive de données via varSpecs. Il parallélise le calcul de statistiques descriptives (SUM, MEAN) pour générer un snapshot analytique optimisé en mémoire CAS.
Agrégation temporelle par mois
Cet exemple exploite le moteur temporel de CAS via id et interval. Il segmente les flux transactionnels en fenêtres mensuelles, optimisant le calcul parallèle de SUM/MAX par produit et période.