Розуміння Рядкового Та Фільтрувального Контексту
Свайпніть щоб показати меню
Кожне обчислення 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 як міру, а не як обчислюваний стовпець?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Розуміння Рядкового Та Фільтрувального Контексту
Кожне обчислення 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 як міру, а не як обчислюваний стовпець?
Дякуємо за ваш відгук!