Description
La fonction SUMMARIZE
résume son tableau d'entrée, en regroupant par une ou plusieurs colonnes.
Utilisation
SUMMARIZE (<Table Expression>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
La fonction SUMMARIZE produit un nouveau tableau. Le nouveau tableau inclura toutes les colonnes sur lesquelles le regroupement est effectué, ainsi que les nouvelles expressions.
Exemples
Éviter le double comptage des rapports d'activité
Si vous avez un programme dont l'objectif est de promouvoir certaines pratiques nutritionnelles pour les mères d'enfants de cinq ans et moins, et que des partenaires vous rapportent des indicateurs de résultats agrégés tels que :
- Nombre de mères atteintes par le porte-à-porte (
INPERSON
) - Nombre estimé de mères atteintes par des émissions de radio (
RADIO
)
Vous pourriez vouloir estimer votre portée globale en combinant ces deux indicateurs. Cependant, si un partenaire effectue du porte-à-porte et un autre partenaire diffuse des émissions de radio dans la même zone géographique, vous ne voulez pas compter ces indicateurs en double.
Partenaire | District | INPERSON | RADIO |
---|---|---|---|
A | Nord | 500 | |
A | Sud | 600 | 1 000 |
B | Nord | 2 000 | |
B | Est | 5 000 | |
C | Ouest | 300 |
Dans ce cas, si vous additionniez tous ces indicateurs, vous risqueriez de compter en double les résultats dans le district Nord où 500 mères ont été atteintes en personne, mais 2 000 ont été atteintes par la radio. Il est probable que de nombreuses mères aient reçu à la fois une visite en personne et entendu le message à la radio.
Une solution consiste à d'abord additionner les résultats au niveau du district, et à prendre soit les chiffres des visites en personne, soit ceux de la radio, selon le plus élevé.
Nous utiliserons d'abord la fonction SUMMARIZE pour calculer un nouveau tableau avec les SOMMES des deux champs par district.
SUMMARIZE([Rapports des partenaires], Province, "TOTAL_INPERSON", SUM(INPERSON), "TOTAL_RADIO", SUM(RADIO))
Cela nous donne un nouveau tableau qui ressemble à :
District | TOTAL_INPERSON | TOTAL_RADIO |
---|---|---|
Nord | 500 | 2 000 |
Sud | 600 | 1 000 |
Est | 5 000 | |
Ouest | 300 |
Maintenant, pour trouver la portée totale, nous pouvons utiliser la fonction SUMX pour calculer le MAX de chaque ligne, puis additionner les maximums :
SUMMARIZE([Rapports des partenaires], Province, "TOTAL_INPERSON", SUM(INPERSON), "TOTAL_RADIO", SUM(RADIO)) |>
SUMX(MAX(TOTAL_INPERSON, TOTAL_RADIO))
Cela nous donne un résultat final de 2 000 + 1 000 + 5 000 + 300, soit 8 300.
Suivi des modifications de l'état de santé dans le temps
Supposons que vous suiviez le nombre de membres de la famille malades dans les ménages au fil du temps. Vous avez un formulaire « Bilan de santé du ménage » qui contient des enregistrements sur le nombre de membres de la famille malades à une date de rapport donnée, comme suit :
Famille | Nombre de membres de la famille malades | Date du rapport |
---|---|---|
Ahunna | 3 | 2023-01-15 |
Bilal | 1 | 2023-02-10 |
Ahunna | 4 | 2023-01-20 |
Bilal | 2 | 2023-01-15 |
Vous pouvez définir une table calculée qui montre le premier et le dernier nombre de membres de la famille malades signalés pour chaque famille en utilisant la formule suivante :
SUMMARIZE([Bilan de santé du ménage], [Famille],
"Baseline", FIRST([Nombre de membres de la famille malades], [Date du rapport]),
"Final", LAST ([Nombre de membres de la famille malades], [Date du rapport])) |>
ADDCOLUMNS(
"Change", Final - Baseline,
"Pct change", (Final - Baseline) / Baseline)
Le résultat serait un tableau :
Famille | Baseline | Final | Change | Pct Change |
---|---|---|---|---|
Ahunna | 3 | 4 | 1 | 33% |
Bilal | 2 | 1 | -1 | -33% |