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 en 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 actividad
Si tiene un programa con el objetivo de promover ciertas prácticas nutricionales para madres de niños de cinco años o menos, y tiene asociados 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
)
Puede que desee estimar su alcance general combinando estos dos indicadores. Sin embargo, si tiene un asociado que realiza visitas puerta a puerta y otro que emite programas de radio en la misma zona geográfica, no querrá hacer un doble recuento de esos indicadores.
Asociado | 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 hayan recibido tanto una visita en persona como hayan escuchado el mensaje en la radio.
Una solución a esto es sumar primero los resultados a nivel de distrito, y tomar ya sea las cifras en persona, o las cifras de la radio, la que sea mayor.
Primero usaremos la función SUMMARIZE para calcular una nueva tabla con las SUMAS de los dos campos por distrito.
SUMMARIZE([Informes de asociados], Provincia, "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 MÁX de cada fila, y luego sumar los máximos:
SUMMARIZE([Informes de asociados], Provincia, "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 u 8.300.
Seguimiento de los cambios en el estado de salud a lo largo del tiempo
Supongamos que está haciendo un seguimiento del número de familiares enfermos en los hogares a lo largo del tiempo. Tiene un formulario "Revisión de salud del hogar" que contiene registros del número de familiares enfermos en una fecha de informe determinada, como se indica a continuación:
Familia | Número de familiares enfermos | Fecha del informe |
---|---|---|
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 más antiguo y el más reciente de familiares enfermos para cada familia utilizando la siguiente fórmula:
SUMMARIZE([Revisión de salud del hogar], [Familia],
"Baseline", FIRST([Número de familiares enfermos], [Fecha del informe]),
"Final", LAST ([Número de familiares enfermos], [Fecha del informe])) |>
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% |