Мова: Українська
Опис
Функція SUMMARIZE узагальнює вхідну таблицю, групуючи її за однією або кількома колонками.
Використання
SUMMARIZE (<Table Expression>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Функція summarize повертає нову таблицю. Нова таблиця міститиме всі колонки, за якими здійснюється групування, а також нові вирази.
Приклади
Уникнення подвійного підрахунку у звітах про активності
Якщо у вас є програма, метою якої є просування певних практик харчування для матерів дітей до п'яти років, і партнери звітують вам про зведені показники, такі як:
- Кількість матерів, охоплених шляхом обходу від дверей до дверей (
INPERSON) - Орієнтовна кількість матерів, охоплених за допомогою радіопередач (
RADIO)
Можливо, ви захочете оцінити загальне охоплення, об'єднавши ці два показники. Однак, якщо один партнер проводить обхід від дверей до дверей, а інший — радіопередачі в тій самій географічній зоні, ви не захочете рахувати ці показники двічі.
| Партнер | Район | INPERSON | RADIO |
|---|---|---|---|
| A | Північний | 500 | |
| A | Південний | 600 | 1,000 |
| B | Північний | 2,000 | |
| B | Східний | 5,000 | |
| C | Західний | 300 |
У цьому випадку, якщо ви додасте всі ці показники, ви ризикуєте двічі порахувати результати в Північному районі, де 500 матерів було охоплено особисто, а 2000 — через радіо. Ймовірно, багато матерів отримали і особистий візит, і почули повідомлення по радіо.
Одним із рішень є спочатку підсумувати результати на рівні району, а потім взяти або показники особистих візитів, або показники радіо — залежно від того, що більше.
Спочатку ми використаємо функцію SUMMARIZE, щоб обчислити нову таблицю з сумами двох полів за районами.
SUMMARIZE([Partner reports], Province, "TOTAL_INPERSON", SUM(INPERSON), "TOTAL_RADIO", SUM(RADIO))
Це дає нам нову таблицю, яка виглядає так:
| Район | TOTAL_INPERSON | TOTAL_RADIO |
|---|---|---|
| Північний | 500 | 2,000 |
| Південний | 600 | 1,000 |
| Східний | 5,000 | |
| Західний | 300 |
Тепер, щоб знайти загальне охоплення, ми можемо використати функцію SUMX, щоб обчислити MAX для кожного рядка, а потім підсумувати ці максимуми:
SUMMARIZE([Partner reports], Province, "TOTAL_INPERSON", SUM(INPERSON), "TOTAL_RADIO", SUM(RADIO)) |>
SUMX(MAX(TOTAL_INPERSON, TOTAL_RADIO))
Це дає нам кінцевий результат 2000 + 1000 + 5000 + 300, або 8300.
Відстеження змін у стані здоров'я з часом
Припустимо, ви відстежуєте кількість хворих членів сім'ї в домогосподарствах з часом. У вас є форма «Перевірка здоров'я домогосподарства», яка містить записи про кількість хворих членів сім'ї на певну дату звітування, як показано нижче:
| Сім'я | Кількість хворих членів сім'ї | Дата звітування |
|---|---|---|
| Ахунна | 3 | 2023-01-15 |
| Білал | 1 | 2023-02-10 |
| Ахунна | 4 | 2023-01-20 |
| Білал | 2 | 2023-01-15 |
Ви можете визначити обчислювану таблицю, яка показує найранішу та найпізнішу зареєстровану кількість хворих членів сім'ї для кожної родини, використовуючи таку формулу:
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)
Результатом буде таблиця:
| Сім'я | Базовий рівень | Кінцевий рівень | Зміна | % зміни |
|---|---|---|---|---|
| Ахунна | 3 | 4 | 1 | 33% |
| Білал | 2 | 1 | -1 | -33% |