Контекст показника

Мова: Українська
Цю статтю перекладено з англійської за допомогою ШІ, тому вона може містити помилки. Ваші відгуки допоможуть нам її покращити.

Вступ

Усі формули в ActivityInfo обчислюються в контексті.

Коли ви додаєте обчислюване поле в ActivityInfo, формули обчислюються в контексті запису. Це означає, що формула обчислюється для кожного запису у формі.

Наприклад, якщо у вас є форма з двома полями кількості «Дівчата» та «Хлопці», ви можете додати обчислюване поле «Всього», яке матиме формулу «Дівчата + Хлопці».

У цьому випадку формула обчислюється для кожного запису.

Назва Дівчата Хлопці Дівчата + Хлопці Дівчата/Хлопці
Haji Sadig 40 35 75 1.142857
Kirby Elementary 10 50 60 0.200000

Однак для обчислюваних показників ми починаємо без контексту. З цієї причини ми повинні чітко вказати ідентифікатор форми та ідентифікатор поля, на які ми хочемо посилатися. Наприклад, якби ми хотіли отримати загальну кількість хлопців, ми могли б написати:

SUMX(c21geplcowbxdn2, Boys)

Це дає той самий результат, що й перетягування поля «Хлопці» на панель «Розміри» в конструкторі зведених таблиць і вибір агрегації SUM.

Якщо ми хочемо знайти співвідношення кількості дівчат до хлопців, ми можемо написати:

SUMX(c21geplcowbxdn2, Girls) / SUMX(c21geplcowbxdn2, Boys)

Наведена вище формула спочатку підсумовує кількість дівчат, потім підсумовує кількість хлопців і, нарешті, ділить дві суми. Для наведеної вище таблиці це дає нам 50 / 85 = 0.59

Примітка: це відрізняється від обчислюваного поля в таблиці вище: там ми спочатку ділимо дівчат на хлопців. Якщо ви додасте це обчислюване поле до зведеної таблиці, буде обчислено суму або середнє значення співвідношень, а не співвідношення сум.

Контекст рядка

У наведених вище прикладах ми агрегували значення одного поля. В інших випадках вам може знадобитися підсумувати або усереднити обчислення для кожного рядка. Щоб агрегувати обчислення одного або кількох полів, а не одного поля, ви можете використовувати функцію AVERAGEX:

AVERAGEX(c21geplcowbxdn2, Boys + Girls)

У наведеній вище формулі використання функції AVERAGEX змінює контекст, і вираз Boys + Girls обчислюється для кожного запису, а потім усереднюється, так само як і обчислюване поле.

Насправді, формула з AVERAGEX еквівалентна наступній:

AVERAGEX(c21geplcowbxdn2, Total) 

Де Total — це обчислюване поле, визначене у формі «Школи» з формулою Boys + Girls.

Контекст фільтра

Звичайно, в більшості випадків нас цікавить не одне число. У нашому прикладі зі школами вище, ми можемо захотіти побачити гендерне співвідношення за провінціями або за типами шкіл. Якщо ваша таблиця шкіл включає в себе поле для провінції та типу, то ви можете створити матрицю з гендерним співвідношенням за провінцією та типом:

Загальнодоступний Приватний
Північ 1.2 0.8
Південь 1.1 0.7

У цьому випадку обчислюваний показник обчислюється чотири рази, по одному разу для кожної клітинки. Для кожної клітинки ми переоцінюємо формулу з новим контекстом фільтра.

При використанні зведених таблиць ви можете використовувати інтерфейс користувача для перетягування полів як вимірів рядків і стовпців, що створює неявний контекст фільтра. Однак ви також можете змінити контекст фільтра за допомогою функції CALCULATE(). Значення у зведеній таблиці вище будуть такими ж, як і в наступних чотирьох формулах:

CALCULATE( SUMX(schools, Girls) / SUMX(schools, Boys), 
	schools.Province == "Північ", 
	schools.Type == "Приватний")

CALCULATE( SUMX(schools, Girls) / SUMX(schools, Boys), 
	schools.Province == "Північ", 
	schools.Type == "Загальнодоступний")

CALCULATE( SUMX(schools, Girls) / SUM(schools, Boys), 
	schools.Province == "Південь", 
	schools.Type == "Приватний")

CALCULATE( SUMX(schools, Girls) / SUMX(schools, Boys), 
	schools.Province == "Південь", 
	schools.Type == "Загальнодоступний")

Ви також можете використовувати функцію CALCULATE() для зміни контексту фільтра, який вже був застосований, або через вираз CALCULATE, що його охоплює, або через інтерфейс користувача.

Наприклад, якщо ми хочемо знайти відсоток від загальної кількості наших студенток у кожному типі та місці розташування школи, ми можемо використати функцію ALL, щоб очистити будь-які успадковані фільтри.

Ви можете написати обчислюваний показник:

SUMX(schools, Girls) / CALCULATE(SUMX(schools, Girls), ALL(schools))

Тепер будь-які фільтри, застосовані в нашій матриці, будуть застосовуватися до чисельника, але будуть очищені знаменником, що дасть таблицю на кшталт:

Загальнодоступний Приватний
Північ 40% 20%
Південь 25% 15%

Наведена вище таблиця показує, що 40% студенток навчаються в загальнодоступних школах на Півночі, тоді як лише 15% дівчат — у приватних школах на Півдні.

Обчислення таблиць

Усі наведені вище формули обчислюють одне число. Однак у деяких випадках необхідно працювати з цілими таблицями.

Наприклад, ви можете захотіти дізнатися, скільки регіонів мають більшість студенток.

У цьому випадку ми можемо обчислити нову таблицю з нашої форми «Школи», яка підсумовує хлопців і дівчат у кожному регіоні.

SUMMARIZE(c21geplcowbxdn2, REGION, "GT", SUM(Girls), "BT", SUM(Boys)) 

Результатом функції SUMMARIZE() є не одне число, а ціла таблиця.

Однак нам все ще потрібно обчислити одне число з цієї таблиці. Ми можемо зробити це, поєднавши функцію SUMMARIZE з функцією SUMX:

SUMX(
    SUMMARIZE(c21geplcowbxdn2, REGION, "GT", SUM(Girls), "BT", SUM(Boys)),
    GT > BT)

Результатом цього виразу є 1.

Оскільки перетворення таблиць стають складнішими, вирази з високим рівнем вкладеності може стати важко читати. Щоб зробити ваші формули більш читабельними, ви можете використовувати оператор конвеєра. Оператор конвеєра приймає результат виразу і передає його як перший аргумент до іншого виклику функції. Наприклад, ви можете переписати наведену вище формулу так:

SUMMARIZE(c21geplcowbxdn2, REGION, "GT", SUM(Girls), "BT", SUM(Boys)) |> 
	SUMX(GT > BT)

Ця формула дає нам кількість регіонів, де більшість студентського населення становлять жінки.

Форми та таблиці

У вступі вище ми згадували «таблиці» та «колонки». Однак, можливо, ви найбільше знайомі з «формами» ActivityInfo.

Хоча всі «форми» ActivityInfo є «таблицями» для цілей обчислюваних показників, не всі таблиці є формами.

Форми ActivityInfo мають багато властивостей, пов'язаних зі збором даних, таких як правила перевірки та правила релевантності, на додаток до обчислюваних полів, значення яких походять від інших полів. Форми також мають «поля», такі як заголовки розділів та підформи, які допомагають організувати введення даних, але фактично не мають значення. Форми ActivityInfo заповнюються записами, які завжди мають внутрішній ідентифікатор (_id) та повну історію змін.

У контексті обчислюваних показників форма ActivityInfo розглядається як таблиця, її записи стають рядками, а її поля — колонками.

Наступний елемент
Типи