Розуміння Рядкового Та Фільтрувального Контексту
Свайпніть щоб показати меню
Кожне обчислення DAX виконується у певному контексті — визначенні того, які рядки є актуальними на момент обчислення. Без розуміння контексту неможливо передбачити, яке значення поверне міра, або з’ясувати, чому вона повертає неправильний результат.
Контекст рядка
Контекст рядка — це контекст, який існує всередині обчислюваного стовпця. Під час обчислення обчислюваного стовпця Power Pivot опрацьовує кожен рядок окремо — DAX точно знає, на якому рядку знаходиться, і використовує лише значення з цього рядка у розрахунку.
Що це таке? Усвідомлення поточного рядка. Формула може звертатися до будь-якого стовпця в тій самій таблиці та отримувати значення саме для цього рядка — не суму чи середнє, а конкретне значення комірки.
Контекст рядка не існує для мір. Під час обчислення міри немає поточного рядка — є лише набір активних фільтрів. Саме тому спроба написати рядкову мітку як міру призводить до помилки: міра не має рядка, до якого можна звернутися.
Контекст фільтра
Контекст фільтра — це контекст, який існує під час обчислення міри. Це повний набір активних фільтрів у моделі даних на момент обчислення міри — визначається всім, що зведена таблиця знає про цю конкретну комірку.
Кожна клітинка у зведеній таблиці має унікальну комбінацію активних фільтрів.
Порожня клітинка не означає помилку — це означає, що фільтрувальний контекст для цієї клітинки не повертає жодного рядка, що відповідає умовам. За поточної комбінації активних фільтрів просто немає даних.
Чотири джерела фільтрувального контексту
Фільтрувальний контекст накопичується одночасно з чотирьох незалежних джерел. Кожне з них додатково звужує набір даних:
- Мітки рядків: кожне значення в області рядків застосовує фільтр до свого рядка. Region = North і Region = South створюють різні фільтрувальні контексти — кожна клітинка у рядку North бачить лише продажі North;
- Мітки стовпців: кожне значення в області стовпців додає другий вимір фільтрації. У поєднанні з мітками рядків кожна клітинка знаходиться на перетині двох незалежних фільтрів;
- Зрізи: вибір у зрізі застосовує свій фільтр до кожної клітинки зведеної таблиці одночасно. Вибір January у зрізі місяців обмежує всі клітинки даними лише за січень незалежно від їхнього положення у рядках чи стовпцях;
- Фільтри зведеної таблиці: фільтри, застосовані безпосередньо в області фільтрів зведеної таблиці, також впливають на фільтрувальний контекст кожної клітинки, накладаючись на вже активні фільтри рядків, стовпців і зрізів.
Завдання
Крок 1 — Експеримент із контекстом рядка
-
Відкрийте робочу книгу. Перейдіть на вкладку Power Pivot → Керування → Подання даних → Sales.
-
Перегляньте обчислюваний стовпець Order Size. Він містить значення Large або Small для кожного рядка залежно від значення Quantity у цьому рядку.
-
Додайте другий обчислюваний стовпець до таблиці Sales, використовуючи таку формулу:
= Sales[Quantity] * Sales[UnitPrice]
-
Перейменуйте його на
Row Revenue. -
Прокрутіть стовпець і переконайтеся, що кожен рядок містить різне значення, а саме добуток Quantity і UnitPrice для цього конкретного рядка.
Крок 2 — Дайте відповіді на наступні питання
- Який тип контексту використовується, коли DAX обчислює Row Revenue для кожного рядка?
- Чи є Row Revenue тим самим, що й стовпець Total, який вже є у таблиці Sales?
- Чи було б доцільно створити Row Revenue як міру, а не як обчислюваний стовпець?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат