Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

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

В тази статия

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

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

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

=SUMX(
     ФИЛТЪР ('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(Продажби[сума]; ФИЛТЪР(Продажби; ALL(Продукти))

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

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

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

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

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

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

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

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

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

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

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

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

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

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

×