Мова: Українська
Опис
Функція 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([Звіти партнерів], Район, "ВСЬОГО_ОСОБИСТО", SUM(INPERSON), "ВСЬОГО_РАДІО", SUM(RADIO))
Це дає нам нову таблицю, яка виглядає так:
| Район | ВСЬОГО_ОСОБИСТО | ВСЬОГО_РАДІО |
|---|---|---|
| Північний | 500 | 2,000 |
| Південний | 600 | 1,000 |
| Східний | 5,000 | |
| Західний | 300 |
Тепер, щоб знайти загальне охоплення, ми можемо використати функцію SUMX, щоб обчислити MAX для кожного рядка, а потім підсумувати ці максимуми:
SUMMARIZE([Звіти партнерів], Район, "ВСЬОГО_ОСОБИСТО", SUM(INPERSON), "ВСЬОГО_РАДІО", SUM(RADIO)) |>
SUMX(MAX(ВСЬОГО_ОСОБИСТО, ВСЬОГО_РАДІО))
Це дає нам кінцевий результат 2000 + 1000 + 5000 + 300, або 8300.
Відстеження змін у стані здоров'я з часом
Припустімо, ви відстежуєте кількість хворих членів сім'ї в домогосподарствах з часом. У вас є форма «Перевірка здоров'я домогосподарства», яка містить записи про кількість хворих членів сім'ї на певну дату звітування, як показано нижче:
| Сім'я | Кількість хворих членів сім'ї | Дата звітування |
|---|---|---|
| Ahunna | 3 | 2023-01-15 |
| Bilal | 1 | 2023-02-10 |
| Ahunna | 4 | 2023-01-20 |
| Bilal | 2 | 2023-01-15 |
Ви можете визначити обчислювану таблицю, яка показує найранішу та найпізнішу зареєстровану кількість хворих членів сім'ї для кожної родини, використовуючи таку формулу:
SUMMARIZE([Перевірка здоров'я домогосподарства], [Сім'я],
"Базовий рівень", FIRST([Кількість хворих членів сім'ї], [Дата звітування]),
"Кінцевий рівень", LAST ([Кількість хворих членів сім'ї], [Дата звітування])) |>
ADDCOLUMNS(
"Зміна", Кінцевий рівень - Базовий рівень,
"Зміна у %", (Кінцевий рівень - Базовий рівень) / Базовий рівень)
Результатом буде таблиця:
| Сім'я | Базовий рівень | Кінцевий рівень | Зміна | Зміна у % |
|---|---|---|---|---|
| Ahunna | 3 | 4 | 1 | 33% |
| Bilal | 2 | 1 | -1 | -33% |