Филтриране на данни във формули DAX

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

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

В тази статия

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

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

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

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

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

Отменяне на конкретни филтри с функцията ALLEXCEPT

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

Можете да приложите филтри във формули, които вземат таблица като входни данни. Вместо да въвеждате име на таблицата, използвате функцията 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 за да зададете кои редове от таблицата се използват.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

= SUM (продажби [сума]) / SUMX (продажби [сума], филтър (продажби, ALL(Products)))

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

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

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

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

Отменяне на конкретни филтри с функцията ALLEXCEPT

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

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

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

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

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

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

×