Descripción
La función SUMMARIZE
resume su tabla de entrada, agrupando por una o más columnas.
Uso
SUMMARIZE (<Table Expression>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
La función SUMMARIZE se evalúa como una nueva tabla. La nueva tabla incluirá todas las columnas por las que se agrupa, así como las nuevas expresiones.
Ejemplos
Evitar el doble recuento de los informes de actividades
Si tiene un programa con el objetivo de promover ciertas prácticas nutricionales para madres de niños menores de cinco años, y tiene socios que le informan de indicadores de resultados agregados como:
- Número de madres alcanzadas a través de visitas puerta a puerta (
INPERSON
) - Número estimado de madres alcanzadas a través de emisiones de radio (
RADIO
)
Es posible que desee estimar su alcance total combinando estos dos indicadores. Sin embargo, si tiene un socio que realiza visitas puerta a puerta y otro que emite programas de radio en la misma zona geográfica, no querrá contar dos veces esos indicadores.
Socio | Distrito | INPERSON | RADIO |
---|---|---|---|
A | Norte | 500 | |
A | Sur | 600 | 1.000 |
B | Norte | 2.000 | |
B | Este | 5.000 | |
C | Oeste | 300 |
En este caso, si sumara todos estos indicadores, correría el riesgo de contar dos veces los resultados en el distrito Norte, donde se llegó a 500 madres en persona, pero a 2.000 a través de la radio. Es probable que muchas madres recibieran tanto una visita presencial como el mensaje por la radio.
Una solución a esto es sumar primero los resultados a nivel de distrito, y tomar las cifras de las visitas presenciales o las de la radio, las que sean mayores.
Primero usaremos la función SUMMARIZE para calcular una nueva tabla con las SUM de los dos campos por distrito.
SUMMARIZE([Partner reports], Province, "TOTAL_INPERSON", SUM(INPERSON), "TOTAL_RADIO", SUM(RADIO))
Esto nos da una nueva tabla que se ve así:
Distrito | TOTAL_INPERSON | TOTAL_RADIO |
---|---|---|
Norte | 500 | 2.000 |
Sur | 600 | 1.000 |
Este | 5.000 | |
Oeste | 300 |
Ahora, para encontrar el alcance total, podemos usar la función SUMX para calcular el MAX de cada fila y luego sumar los máximos:
SUMMARIZE([Partner reports], Province, "TOTAL_INPERSON", SUM(INPERSON), "TOTAL_RADIO", SUM(RADIO)) |>
SUMX(MAX(TOTAL_INPERSON, TOTAL_RADIO))
Esto nos da un resultado final de 2.000 + 1.000 + 5.000 + 300, es decir, 8.300.
Seguimiento de los cambios en el estado de salud a lo largo del tiempo
Suponga que está haciendo un seguimiento del número de familiares enfermos en los hogares a lo largo del tiempo. Tiene un formulario "Control de salud del hogar" que contiene registros del número de familiares enfermos en una fecha de notificación determinada, como se indica a continuación:
Familia | Número de familiares enfermos | Fecha de notificación |
---|---|---|
Ahunna | 3 | 2023-01-15 |
Bilal | 1 | 2023-02-10 |
Ahunna | 4 | 2023-01-20 |
Bilal | 2 | 2023-01-15 |
Puede definir una tabla calculada que muestre el número de familiares enfermos comunicado más antiguo y el más reciente para cada familia utilizando la siguiente fórmula:
SUMMARIZE([Household Health Check-in], [Family],
"Baseline", FIRST([Number of sick family members], [Date of reporting]),
"Final", LAST ([Number of sick family members], [Date of reporting])) |>
ADDCOLUMNS(
"Change", Final - Baseline,
"Pct change", (Final - Baseline) / Baseline)
El resultado sería una tabla:
Familia | Línea de base | Final | Cambio | Cambio % |
---|---|---|---|---|
Ahunna | 3 | 4 | 1 | 33% |
Bilal | 2 | 1 | -1 | -33% |