Контекст във формули DAX

Забележка: Бихме искали да ви осигурим най-новото помощно съдържание възможно най-бързо на вашия собствен език. Тази страница е преведена чрез автоматизация и може да съдържа граматически грешки и несъответствия. Нашата цел е това съдържание да ви бъде полезно. Можете ли да ни кажете дали информацията е била полезна за вас, в дъното на тази страница? Ето статията на английски за бърза справка.

Контекст ви позволява да извършвате динамичен анализ, в който резултатите от формулата могат да се променят, така че да отразяват текущия ред или селекция от клетки, както и всички свързани данни. Разбирателство контекст и използване на контекст ефективно са много важни за изграждане на високопроизводителни формули, динамични анализи и отстраняване на проблеми във формули.

Тази секция дефинира различните типове контекст: контекст на реда, контекст на заявката и контекст на филтъра. Обяснява как контекстът е оценен за формули в изчисляеми колони и в обобщени таблици.

Последната част от тази статия предоставя връзки към подробни примери, които илюстрират как се променят резултатите от формулите според контекста.

Контекст на разбирането

Формулите в Power Pivot могат да бъдат засегнати от филтрите, приложени в обобщена таблица, по релации между таблици и чрез филтри, използвани във формули. Контекст е това, което дава възможност за извършване на динамичен анализ. Разбирателство контекстът е важен за изграждане и отстраняване на неизправности във формули.

Има различни типове контекст: контекст на реда, контекст на заявката и контекст на филтъра.

Контекстът на реда може да бъде обмислен като "текущият ред". Ако сте създали изчисляема колона, контекстът на реда се състои от стойностите във всеки отделен ред и стойности в колоните, които са свързани с текущия ред. Има и някои функции (по-стари и най-ранни ), които получават стойност от текущия ред, а след това използват тази стойност при извършване на операция върху цялата таблица.

Контекст на заявката се отнася до поднабора от данни, който се създава неявно за всяка клетка в обобщена таблица, в зависимост от заглавките на редовете и колоните.

Контекстът на филтъра е наборът от стойности, разрешени във всяка колона, на базата на ограниченията на филтъра, които са приложени към реда или които са дефинирани от филтъра за изрази във формулата.

Най-горе на страницата

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

Ако създавате формула в изчисляема колона, контекстът на реда за тази формула включва стойностите от всички колони в текущия ред. Ако таблицата е свързана с друга таблица, съдържанието включва и всички стойности от тази друга таблица, които са свързани с текущия ред.

Например да предположим, че създадете изчисляема колона, = [навло] + [данък],

, което сумира две колони от една и съща таблица. Тази формула се държи като формули в таблица на Excel, която автоматично препраща към стойности от един и същ ред. Имайте предвид, че таблиците са различни от диапазоните: не можете да препращате стойност от реда преди текущия ред, като използвате нотация за диапазон и не можете да препращате към произволна единична стойност в таблица или клетка. Винаги трябва да работите с таблици и колони.

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

Например следната формула използва СВЪРЗАНата функция, за да извлече данъчна стойност от свързана таблица, базирана на региона, в който е експедирана поръчката. Данъчните стойности се определят с помощта на стойността за "регион" в текущата таблица, като се потърси регионът в свързаната таблица, а след това получавате данъчната ставка за този регион от свързаната таблица.

= [Навло] + свързани ("регион" [TaxRate])

Тази формула просто получава данъчната ставка за текущата област от таблицата "регион". Не е нужно да знаете или указвате ключа, свързващ таблиците.

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

Освен това DAX включва функции, които повтарят изчисления върху таблица. Тези функции може да имат няколко текущи реда и текущия ред. В програмен план можете да създавате формули, които препсуват върху вътрешна и външна линия.

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

В Excel това изчисление изисква поредица от междинни сумарни стойности, които трябва да бъдат преустроени при промяна на данните. Ако сте потребител на Power Excel, е възможно да можете да създавате формули за масиви, които ще вършат работата. Алтернативно, в релационна база данни можете да пишете вложени подизбори.

С DAX обаче можете да създадете една формула, която връща правилната стойност, а резултатите автоматично се актуализират по всяко време, когато добавяте данни към таблиците.

= MAXX (FILTER (продажби; [ProdKey] = по-стара ([ProdKey])), Sales [OrderQty])

За подробна информация за тази формула вижте предишната.

Накратко, ПРЕДИШНАТА функция запазва контекста на реда от операцията, която е предшествала текущата операция. Във всеки един момент функцията Магазини в памет два набора от контекст: един набор от контекст представлява текущия ред за вътрешната линия на формулата и друг набор от контекст представлява текущия ред за външната линия на формулата. DAX автоматично подава стойности между двете линии, така че да можете да създавате сложни обединения.

Най-горе на страницата

Контекст на заявката

Контекст на заявката се отнася до подмножеството от данни, които са извлечени неявно за дадена формула. Когато пуснете поле за измерване или друга стойност в клетка в обобщена таблица, Power Pivot изследва заглавията на редове и колони, сегментаторите и филтрите на отчети, за да се определи контекстът. След това Power Pivot прави необходимите изчисления, за да попълни всяка клетка в обобщената таблица. Наборът от данни, които са извлечени, е контекстът на заявката за всяка клетка.

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

Можете например да създадете тази проста формула, която сумира стойностите в колоната печалба на таблицата продажби : = SUM ("продажби" [печалба]).

Ако използвате тази формула в изчисляема колона в таблицата Sales , резултатите от формулата ще бъдат еднакви за цялата таблица, тъй като контекстът на заявката за формулата винаги е целият набор от данни в таблицата " продажби ". Вашите резултати ще имат печалби за всички региони, всички продукти, всички години и т. н.

Обаче обикновено не искате да виждате един и същ резултат стотици пъти, но вместо това искате да получите печалбата за конкретна година, конкретна страна или регион, определен продукт или някаква комбинация от тях и след това да получите обща сума.

В обобщената таблица е лесно да промените контекст чрез добавяне или премахване на заглавки на колони и редове и чрез добавяне или премахване на сегментатори. Можете да създадете формула, като тази по-горе, в мярка, и след това да я пуснете в обобщена таблица. Всеки път, когато добавите заглавия на колони или редове към обобщената таблица, можете да промените контекста на заявката, в който се изчислява мярката. Операциите за рязане и филтриране също влияят върху контекста. Следователно същата формула, която се използва в обобщена таблица, се изчислява в различен контекст на заявка за всяка клетка.

Най-горе на страницата

Контекст на филтъра

Контекстът на филтриране се добавя, когато зададете ограничения за филтъра на набора от стойности, позволени в колона или таблица, като използвате аргументи на формула. Контекстът на филтъра се прилага върху други контексти, като например контекста на реда или контекста на заявката.

Например обобщената таблица изчислява стойностите си за всяка клетка на базата на заглавията на редове и колони, както е описано в предишния раздел в контекст на заявката. В рамките на мерките или изчисляемите колони, които сте добавили към обобщената таблица, можете да зададете изрази за филтриране, за да управлявате стойностите, които се използват от формулата. Можете също така да изчистите отметката от филтрите за определени колони.

За повече информация как да създадете филтри във формулите, вижте функциите за филтриране.

За пример как могат да се изчистят филтрите, за да се създадат общи суми, вижте всички.

За примери как да изчиствате избирателно и да прилагате филтри във формули, вижте ALLEXCEPT функция.

Следователно трябва да прегледате дефиницията за мерки или формули, използвани в обобщена таблица, така че да сте наясно с контекста на филтъра, когато интерпретирате резултатите от формулите.

Най-горе на страницата

Определяне на контекст във формули

Когато създавате формула, Power Pivot за Excel първо проверява за общи синтаксиси и след това проверява имената на колоните и таблиците, които предоставяте срещу възможни колони и таблици в настоящия контекст. Ако Power Pivot не може да намери колоните и таблиците, зададени от формулата, ще получите съобщение за грешка.

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

Например ако току-що сте импортирали някои данни в нова таблица и не сте приложили никакви филтри, целият набор от колони в таблицата е част от текущия контекст. Ако имате множество таблици, които са свързани с релации, и работите в обобщена таблица, която е филтрирана чрез добавяне на заглавия на колони и използване на сегментатори, контекстът включва свързаните таблици и филтрите в данните.

Контекстът е мощна концепция, която може да бъде и по-трудна за отстраняване на формули. Препоръчваме ви да започнете с прости формули и връзки, за да видите как работи контекстът, а след това започнете да експериментирате с прости формули в обобщените таблици. Следващият раздел също така предоставя някои примери за това как формулите използват различни типове контексти за динамично връщане на резултати.

Примери за контекст във формули

  • СВЪРЗАНата функция разширява контекста на текущия ред, така че да включва стойности в свързана колона. Това ви позволява да изпълнявате справки. Примерът в тази тема показва взаимодействието между контекстите на филтриране и ред.

  • Функцията FILTER ви позволява да укажете редовете, които да бъдат включени в настоящия контекст. Примерите в тази тема илюстрират също как да вградите филтри в други функции, които изпълняват обединения.

  • Функцията ALL задава контекст във формула. Можете да го използвате, за да заместите филтрите, които се прилагат като резултат от контекста на заявката.

  • Функцията ALLEXCEPT ви позволява да премахнете всички филтри, с изключение на тези, които указвате. И двете теми включват примери, които ви превеждат през изграждащи формули и разбирайки сложни контексти.

  • По-РАННИТЕ и първите функции ви позволяват да преминавате през таблици, като извършвате изчисления, като същевременно препращате към стойност от вътрешна линия. Ако сте запознати с понятието за повторение и с вътрешните и външните линии, ще оцените силата, която се предоставят по-РАННИТЕ и най-ранни функции. Ако сте начинаещ в тези понятия, трябва внимателно да следвате стъпките в примера, за да видите как се използват вътрешните и външните контексти в изчисленията.

Най-горе на страницата

Цялост на справките

Тази секция описва някои разширени понятия, свързани с липсващи стойности в таблици на Power Pivot, които са свързани с релации. Този раздел може да ви е полезен, ако имате работни книги с множество таблици и сложни формули и искате помощ за разбирането на резултатите.

Ако не сте нови в понятията релационни данни, препоръчваме първо да прочетете уводната тема, Обзор на релациите.

Връзки за интегритет и Power Pivot

Power Pivot не изисква да бъде наложена цялост на връзките между две таблици, за да се дефинира валидна релация. Вместо това се създава празен ред в края на "един" на всяка релация "един към много" и се използва за обработка на всички несъвпадащи редове от свързаната таблица. Ефективно действа като SQL външно съединение.

В обобщени таблици, ако групирате данни от едната страна на релацията, всички несъвпадащи данни в много страни на релацията се групират заедно и ще бъдат включени в общи суми с празен ред. Празното заглавие е приблизително равно на "непознат член".

Разбиране на неизвестния член

Концепцията за неизвестния член вероятно ви е позната, ако сте работили с многомерни бази данни, като например услуги за анализ на SQL Server. Ако терминът е нов за вас, Следващият пример обяснява какво представлява Неизвестният член и как се отразява на изчисленията.

Да предположим, че създавате изчисление, което сумира месечните продажби за всеки магазин, но една колона в таблицата " продажби " липсва стойност за името на магазина. Предвид че таблиците за Stores и Sales са свързани чрез името на магазина, какво очаквате да се случи във формулата? Как трябва да се групира обобщената таблица или да се показват цифрите на продажбите, които не са свързани с съществуващо хранилище?

Този проблем е често срещан в хранилищата за данни, където големите таблици с фактически данни трябва да бъдат логически свързани с таблици с размери, които съдържат информация за магазините, регионите и други атрибути, използвани за категоризиране и изчисляване на факти. За да отстраните проблема, всички нови факти, които не са свързани с съществуващ обект, временно се присвояват на неизвестния член. Ето защо несвързаните факти ще се показват групирани в обобщена таблица под празно заглавие.

Третиране на празни стойности спрямо празен ред

Празните стойности са различни от празните редове, които са добавени, за да поберат неизвестния член. Празната стойност е специална стойност, която се използва за представяне на празни стойности, празни низове и други липсващи ценности. За повече информация за празната стойност, както и за други типове данни на DAX, вижте типове данни в модели на данни.

Най-горе на страницата

Разширете уменията си в Office
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×