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

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

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

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

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

  • Функцията 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 .

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

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

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

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

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

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

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

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

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

×