Контекст у формулах DAX

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

Контекст дає змогу виконати динамічний аналіз, у якому результати формули можна змінити для відображення поточного рядка або клітинки, а також будь-яких пов'язаних даних. Визначення контексту та використання контексту ефективно дуже важливі для створення ефективних формул, динамічних аналізів і виправлення неполадок у формулах.

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

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

Контекст розуміння

Формули в _ z0z_ можуть залежати від фільтрів, застосованих у зведеній таблиці, за зв'язками між таблицями та фільтрами, що використовуються у формулах. Контекст – це те, що дає змогу виконати динамічний аналіз. Контекст розуміння має важливе значення для побудови та для виправлення неполадок із формулами.

Існують різні типи контексту: контекст рядка, контекст запиту та контекст фільтра.

Контекст рядка можна розглядати як "поточний рядок". Якщо ви створили обчислюваний стовпець, контекст рядка складається з значень у кожному окремому рядку та значеннях у стовпцях, пов'язаних із поточним рядком. Існують також деякі функції (раніше і ранніх), які отримують значення з поточного рядка, а потім використовують це значення під час виконання операції над усією таблицею.

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

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

На початок сторінки

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

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

Наприклад, припустімо, що ви створюєте обчислюваний стовпець, = [Вартість доставки] + [Податок];

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

Контекст рядка автоматично слідує за зв'язками між таблицями, щоб визначити, які рядки в пов'язаних таблицях зв'язано з поточним рядком.

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

= [Вартість доставки] + ПОВ'ЯЗАНА ("регіон" [Ціна за Такставками])

Ця формула просто отримує податкову ставку для поточної області, з таблиці "регіон". Вам не потрібно знати або вказувати ключ, який з'єднує таблиці.

Контекст для кількох рядків

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

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

У програмі Excel цей розрахунок вимагає ряд проміжних зведень, які потрібно перебудовати, якщо дані змінилися. Якщо ви – користувач у програмі Excel, можливо, ви зможете створити Формули масиву, що зробить роботу. Крім того, у реляційній базі даних можна записувати вкладені підпункти.

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

= MAXX (фільтр (збут; [Proofkey] = раніше ([Pro"])), продаж [замовлення])

Щоб отримати докладні інструкції з цієї формули, ознайомтеся з попередніми версіями.

За короткий час ПОПЕРЕДНЯ функція зберігає контекст рядка з операції, яка передувала поточній операції. У будь-який час функція зберігає в пам'яті два набори контексту: один набір контексту представляє поточний рядок для внутрішнього циклу формули, а інший набір контексту представляє поточний рядок для зовнішньої петлі формули. DAX автоматично передає значення між двома петлями, щоб можна було створювати складні агрегати.

На початок сторінки

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

Контекст запиту посилається на підмножину даних, які явно отримано для формули. Якщо ви перетягуєте поле «міра» або «інше значення» у клітинках у зведеній таблиці, функція _ z0z_ Engine аналізує заголовки рядків і стовпців, роздільники та фільтри звіту, щоб визначити контекст. Після цього, Power Pivot робить необхідні обчислення для заповнення кожної з них у зведеній таблиці. Набір даних, що отримується, – це контекст запиту для кожної з цих комірок.

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

Наприклад, припустімо, що ви створюєте цю просту формулу, яка обчислює значення в стовпці " прибуток " таблиці ЗБУТУ : = SUM ("продажі" [прибуток]).

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

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

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

На початок сторінки

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

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

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

Щоб отримати докладні відомості про створення фільтрів у формулах, ознайомтеся з функціями фільтра.

Приклад того, як можна очистити фільтри для створення загальних підсумків, наведено в розділі All.

Приклади того, як можна вибірково очистити та використати фільтри в формулах, побачити функцію Allexcept за винятком функції.

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

На початок сторінки

Визначення контексту у формулах

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

Контекст визначається як описано в попередніх розділах, використовуючи доступні таблиці в книзі, будь-які зв'язки між таблицями та будь-які застосовані фільтри.

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

Контекст – це потужна концепція, яка також може ускладнити Виправлення формул. Ми радимо почати роботу з простими формулами та зв'язками, щоб побачити, як працює контекст, а потім почати експериментувати з простими формулами у зведених таблицях. У наведеному нижче розділі також наведено кілька прикладів того, як формули використовують різні типи контексту для динамічного повернення результатів.

Приклади контексту у формулах

  • ЗВ'ЯЗАНА функція розширює контекст поточного рядка, щоб включити значення у відповідний стовпець. Це дає змогу виконувати пошук. У цій статті наведено приклади взаємодії між фільтрацією та рядком.

  • Функція FILTER дає змогу вказати рядки, які потрібно додати до поточного контексту. Приклади в цій статті також ілюструють, як вбудувати фільтри в інші функції, які виконують заповнювачі.

  • Функція ALL визначає контекст у формулі. Ви можете використовувати його, щоб перевизначити фільтри, застосовані як результат контексту запиту.

  • Функція ALLEXCEPT дає змогу видаляти всі фільтри, за винятком того, який ви вказали. Обидві теми містять приклади, які допоможуть вам створювати формули та розуміти складні контексти.

  • ПОПЕРЕДНІ та РАННІ функції дають змогу переходити між таблицями, виконавши обчислення, а також посилаються на значення з внутрішнього циклу. Якщо ви знайомі з концепцією рекурсії та внутрішніми та зовнішніми петлями, ви оціните силу того, що можна забезпечити попередні та РАННІ функції. Якщо ви не хочете, щоб ці концепції були новими, виконайте вказівки, описані в прикладі, щоб дізнатися, як внутрішні та зовнішні контексти використовуються в обчисленнях.

На початок сторінки

Цілісність даних

У цьому розділі описано деякі розширені концепції, пов'язані з відсутніми значеннями в _ z0z_ таблиці, підключені за зв'язками. Цей розділ може знадобитися, якщо у вас є книги з кількома таблицями та складними формулами, а також потрібна допомога в розумінні результатів.

Якщо ви не готові до концепції реляційних даних, радимо спочатку прочитати вступну тему, Огляд зв'язків.

Цілісність даних і _ z0z_ зв'язки

_ z0z_ не вимагає, щоб цілісність даних посилатиметься між двома таблицями, щоб визначити припустимий зв'язок. Натомість пустий рядок створюється в кінці кожного зв'язку «один-до-багатьох» і використовується для обробки всіх рядків, які не відповідають зв'язаній таблиці. Це ефективно відноситься до зовнішнього об'єднання SQL.

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

Знайомство з невідомим учасником

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

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

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

Очищення пустих значень у порівнянні з пустим рядком

Пусті значення відрізняються від пустих рядків, доданих для розміщення невідомого члена. Пусте значення – це спеціальне значення, яке використовується для відображення позначок Null, пустих рядків і інших відсутніх значень. Щоб отримати докладні відомості про пусте значення, а також інші типи даних DAX, перегляньте типи даних у моделях даних.

На початок сторінки

Удосконалення навичок роботи з Office
Ознайомтеся з навчальними матеріалами
Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×