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

Важно : Тази статия е преведена машинно – вижте отказа от отговорност. Английската версия на тази статия за справка можете да намерите тук .

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

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

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

Подробна информация за контекста

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

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

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

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

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

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

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

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

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

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

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

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

= [Навло] + RELATED('Region'[TaxRate])

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

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

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

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

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

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

=Maxx(Filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

За по-подробна информация относно тази формула вж. Функция EARLIER.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Функциите EARLIER и EARLIEST позволяват циклично изпълнение в таблици чрез извършването на изчисления, докато правят препратка към дадена стойност от вътрешен цикъл. Ако сте запознати с концепцията за рекурсия и с вътрешните и външни цикли, ще оцените функционалността, предоставена от функциите EARLIER и EARLIEST. Ако не сте запознати с тези концепции, трябва да следвате внимателно стъпките в примерите, за да видите как вътрешният и външният контекст се използват в изчисленията.

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

Референтна цялост

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

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

Референтна цялост и релации в Power Pivot

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

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

Подробна информация за неизвестния член

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

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

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

Обработка на празни стойности спрямо празния ред

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

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

Забележка : Отказ от отговорност за машинен превод: Тази статия е преведена от компютърна система без човешка намеса. Microsoft предлага тези машинни преводи, за да помогне на потребителите, които не говорят английски, да се възползват от съдържанието за продукти, услуги и технологии на Microsoft. Тъй като статията е преведена машинно, е възможно да съдържа грешки в речника, синтаксиса и граматиката.

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

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

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

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

×