Applies ToExcel за Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016 Excel 2013

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

В тази статия

Създаване на филтър в таблица, използвана във формула

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

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

=SUMX(      FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Количество] > 5 &&      "ResellerSales_USD"[ProductStandardCost_USD] > 100),      'ResellerSales_USD'[SalesAmt]      )

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

  • Втората част от формулата FILTER(table, expression),казва на SUMX кои данни да се използват. SUMX изисква таблица или израз, който води до таблица. Тук, вместо да използвате всички данни в таблица, можете да използвате функцията FILTER , за да зададете кои от редовете от таблицата да се използват.

    Изразът за филтър има две части: първата част съдържа имена на таблицата, за която се отнася филтърът. Втората част дефинира израз, който да се използва като условие за филтриране. В този случай филтрирате по риселъри, които са продали повече от 5 бройки, и продукти, които струват повече от 100 лв. Операторът, &&, е логически оператор AND, който показва, че и двете части на условието трябва да бъдат изпълнени, за да принадлежи редът към филтрираното подмножество.

  • Третата част от формулата показва на SUMX функция кои стойности трябва да се сумират. В този случай използвате само сумата на продажбите.

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

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

Филтри, които премахват повторения

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

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

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

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

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

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

Как контекстът влияе върху филтрите

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

За повече информация вижте Контекст в DAX формули.

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

Премахване на филтри

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

Заместване на всички филтри с функцията ALL

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

Забележка: Ако сте запознати с терминологията на релационните бази данни, можете да мислите за ALL като за генериране на естественото ляво външно съединение на всички таблици.

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

=SUM (Продажби[Сума])/SUMX(Продажби[Сума], FILTER(Продажби; ALL(Продукти)))

  • Първата част от формулата SUM (Продажби[Сума]) изчислява числителя.

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

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

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

Заместване на определени филтри с функцията ALLEXCEPT

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

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

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

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