aggregation

aggregate

##set_aggregation

Description

L'action aggregate de l'ensemble d'actions aggregationProcessus de regroupement de données (somme, moyenne, etc.) via des actions CAS. Il réduit la volumétrie en synthétisant les observations détaillées pour faciliter l'analyse et la visualisation. effectue l'agrégation sur les variables sélectionnées . C'est l'outil parfait pour condenser de larges volumes de données, notamment chronologiques ou dimensionnelles, produisant un résumé clair et net (pour que vos serveurs puissent enfin prendre une pause café bien méritée !).

Syntaxe Officielle
proc cas;
aggregation.aggregate /
table={name="<nom_table>", caslib="<caslib>"}
casOut={name="<nom_sortie>", caslib="<caslib>"}
id="<variable_date>"
interval="<intervalle>"
varSpecs={{name="<variable>", agg="<fonction>"}};
run;
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée, la caslib et d'autres paramètres communs .
casOut Spécifie les paramètres de la table de sortie .
varSpecs Définit les variables à agréger et les statistiques précises à calculer (MEAN, SUM, MAX, MIN, PERCENTILE, etc.).
id Identifie la variable temporelle (SAS DATE, TIME, ou DATETIME) utilisée pour classer chronologiquement chaque observation.
interval Détermine la période de regroupement temporel pour l'accumulation (ex: 'MONTH', 'YEAR'). Ce paramètre s'utilise en tandem avec la variable id.

Préparation des données

Création des données de ventes

Nous générons une table CAS contenant un historique de ventes quotidiennes aléatoires sur une année.

1DATA casuser.ventes_quotidiennes;
2 call streaminit(12345);
3 DO Date = '01JAN2023'd to '31DEC2023'd;
4 Produit = 'Widget';
5 Montant = round(rand('uniform') * 150 + 20, 0.01);
6 OUTPUT;
7 END;
8 FORMAT Date date9.;
9RUN;

Exemples d'utilisation

Agrégation globale des ventes

Un exemple de base qui calcule la somme totale et la moyenne des ventes sur l'ensemble de la table, en utilisant varSpecs.

1PROC CAS;
2 aggregation.aggregate /
3 TABLE={name="ventes_quotidiennes", caslib="casuser"}
4 casOut={name="ventes_globales", caslib="casuser", replace=true}
5 varSpecs={
6 {name="Montant", agg="SUM", columnNames={"Somme_Totale"}},
7 {name="Montant", agg="MEAN", columnNames={"Moyenne_Globale"}}
8 };
9RUN;
10QUIT;
Résultat Attendu :
Une table contenant une seule ligne avec la somme totale et la moyenne globale de la variable Montant.
Agrégation temporelle par mois

Exploitation avancée : agrégation des ventes par mois à l'aide des paramètres 'id' et 'interval'. Remarquez l'utilisation indispensable de groupBy sur la variable temporelle pour que le découpage mensuel fonctionne !

1PROC CAS;
2 aggregation.aggregate /
3 TABLE={name="ventes_quotidiennes", caslib="casuser", groupBy={"Produit", "Date"}}
4 id="Date"
5 interval="MONTH"
6 casOut={name="ventes_mensuelles", caslib="casuser", replace=true}
7 varSpecs={
8 {name="Montant", agg="SUM", columnNames={"Ventes_Mensuelles"}},
9 {name="Montant", agg="MAX", columnNames={"Max_Quotidien_Mois"}}
10 };
11RUN;
12QUIT;
Résultat Attendu :
La table de sortie contiendra 12 lignes (une par mois pour le produit 'Widget'), résumant la somme des ventes et le montant maximum atteint pour chaque mois de l'année.