Filtrowanie danych w formułach
W formułach można tworzyć filtry w celu ograniczenia wartości z danych źródłowych używanych w obliczeniach.Aby to zrobić, określając tabela jako dane wejściowe do formuły, a następnie zdefiniowanie wyrażenie filtru.Wyrażenie filtru wykonuje zapytanie dotyczące danych i zwraca tylko pewien podzestaw danych źródłowych.Filtr jest stosowany dynamicznie przy każdej aktualizacji wyników formuły, zależnie od bieżącego kontekstu danych.W tej sekcji opisano sposób tworzenia filtrów w formułach języka Data Analysis Expressions (DAX).
Tworzenie filtru dla tabeli używanej w formule
Filtry można stosować w formułach, które jako danych wejściowych używają tabeli.Zamiast wprowadzać nazwę tabeli, można użyć funkcji FILTER w celu wskazania podzestawu wierszy z określonej tabeli.Następnie ten podzestaw jest przekazywany do innej funkcji w celu wykonania operacji, takich jak agregacje niestandardowe.
Na przykład tabela danych zawiera informacje o zamówieniach odsprzedawców i trzeba obliczyć wartość sprzedaży każdego odsprzedawcy.Jednak trzeba wyświetlić kwoty sprzedaży tylko dla tych odsprzedawców, którzy sprzedali wiele sztuk produktów o wysokiej wartości.Poniższa formuła, oparta na przykładowym skoroszycie języka DAX, przedstawia przykład sposobu przeprowadzenia tego obliczenia przy użyciu filtru:
=SUMX(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Quantity] > 5 &&
'ResellerSales_USD'[ProductStandardCost_USD] > 100),
'ResellerSales_USD'[SalesAmt]
)
The first part of the formula specifies one of the PowerPivot aggregation functions, which takes a table as an argument.SUMX calculates a sum over a table.
The second part of the formula, FILTER(table, expression), tells SUMX which data to use.SUMX requires a table or an expression that results in a table.W tym miejscu zamiast wszystkich danych w tabela służy FILTER funkcja, aby określić, które wiersze z tabela służą.
Wyrażenie filtru ma dwie części: Pierwsza część nazwy tabela, do którego stosowany jest filtr.Druga część definiuje wyrażenie, które ma zostać użyte jako warunek filtru.W tym przypadku filtrowanie jest wykonywane wg odsprzedawców, którzy sprzedali ponad 5 sztuk produktów o cenie wyższej niż 100 USD.Operator, &&, jest logiczny operator i wskazuje, że obie części warunek muszą być prawdziwe dla wiersza należące do podzbiór filtrowanej.
Trzecia część formuły informuje SUMX funkcja wartości, które powinny być sumowane.W tym przypadku jest używana kwota sprzedaży.
Należy zauważyć, że funkcje takie jak filtr, zwracające tabela nigdy nie zwracają tabela lub wiersze bezpośrednio do PowerPivot skoroszyt, ale zawsze są osadzone w innej funkcja.Aby uzyskać więcej informacji dotyczących filtru i inne funkcje używane do filtrowania, tym więcej przykładów, zobacz Funkcje filtru (język DAX).
Ostrzeżenie
Wyrażenie filtru jest zagrożony kontekst , w którym jest używany.Na przykład jeśli filtr jest używany w mierze i ta miara jest używana w tabeli przestawnej lub na wykresie przestawnym, podzestaw zwracanych danych może zależeć od dodatkowych filtrów lub fragmentatorów zastosowanych w tabeli przestawnej.Aby uzyskać więcej informacji na temat kontekstu, zobacz Kontekst w formułach języka DAX.
Filtry usuwające duplikaty
Oprócz stosowania filtrów w celu uzyskania określonych wartości można również zwracać unikatowy zestaw wartości z innej tabeli lub kolumny.Może to być pomocne, jeśli trzeba zliczyć unikatowe wartości w kolumnie lub użyć listy unikatowych wartości w innych operacjach.Zwracanie wartości distinct DAX udostępnia dwie funkcje: Funkcja DISTINCT (język DAX)and Funkcja VALUES (język DAX).
ODRĘBNE funkcja sprawdza, czy pojedyncza kolumna, określić jako argument funkcji i zwraca nową kolumnę zawierającą różne wartości.
Funkcja wartości również zwraca listę unikatowych wartości, ale również zwraca Nieznany element członkowski.Jest to przydatne w przypadku używania wartości z dwóch tabel, które są powiązane relacją, i pewna wartość istnieje w jednej tabeli, ale nie ma jej w drugiej.Aby uzyskać więcej informacji na temat nieznany element członkowski, zobacz Kontekst w formułach języka DAX.
Obie te funkcje zwracają całą kolumnę wartości i dlatego tych funkcji można używać w celu uzyskania listy wartości, które są przekazywane do innej funkcji.Na przykład za pomocą poniższej formuły, używając unikatowego klucza produktu, można pobrać listę różnych produktów sprzedanych przez określonego odsprzedawcę, a następnie zliczyć produkty na liście, używając funkcji COUNTROWS:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Jak kontekst wpływa na filtry
Po dodaniu DAX formuły do tabela przestawna lub wykresu przestawnego wyniki formuły mogą wpływać kontekst.Jeśli pracujesz PowerPivot tabela kontekstu jest bieżący wiersz i wartości.W przypadku pracy z tabelą przestawną lub wykresem przestawnym kontekst oznacza zestaw lub podzestaw danych zdefiniowany przez operacje, takie jak fragmentowanie lub filtrowanie.Ponadto projekt tabeli przestawnej lub wykresu przestawnego wymusza swój własny kontekst.Na przykład w przypadku utworzenia tabeli przestawnej grupującej wielkość sprzedaży według regionów i lat w tabeli przestawnej pojawiają się tylko dane dotyczące tych regionów i lat.Dlatego wszelkie miary dodawane do tabeli przestawnej są obliczane w kontekście nagłówków kolumn i wierszy oraz wszystkich filtrów w formule miary.
Aby uzyskać więcej informacji, zobacz Kontekst w formułach języka DAX.
Usuwanie filtrów
Podczas pracy ze złożonymi formułami warto wiedzieć dokładnie, jakie są bieżące filtry, i modyfikować kontekst filtru w ramach formuły.Język DAX oferuje kilka funkcji umożliwiających usuwanie filtrów i określanie, które kolumny mają pozostawać częścią kontekstu bieżącego filtru.W tej sekcji opisano, w jaki sposób te funkcje wpływają na wyniki formuły.
Usuwanie wszystkich filtrów za pomocą funkcji ALL
Można użyć ALL funkcja, aby zastąpić wszystkie filtry, które wcześniej były stosowane i zwraca wszystkie wiersze w tabela do funkcja, która wykonuje operację wartość zagregowana lub.Jeśli używasz jednej lub kilku kolumn zamiast tabela jako argumenty ALL,ALL funkcja zwraca wszystkie wiersze, pomijając wszelkie filtry kontekstowe.
Ostrzeżenie
Osoby zaznajomione z terminologią relacyjnej bazy danych można traktować ALL jako generowania fizyczna lewe sprzężenie zewnętrzne wszystkie tabele.
Załóżmy, że tabele, Sales i Products, i chcesz utworzyć formułę, która oblicza sumę sprzedaży produktu podzielona przez sprzedaż dla wszystkich produktów.Należy wziąć pod uwagę fakt, że jeśli formuła jest używana w mierze, użytkownik tabeli przestawnej może używać fragmentatora do filtrowania danych według określonych produktów, używając nazw produktów w wierszach.Dlatego, aby uzyskać prawdziwą wartość mianownika niezależnie od wszelkich filtrów lub fragmentatorów, trzeba dodać funkcję ALL w celu usunięcia wszystkich filtrów.Następująca formuła to przykład sposobu użycia funkcji ALL do usunięcia efektów wcześniej zastosowanych filtrów:
=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))
Pierwsza część formuły, SUM (Sales[Amount]), oblicza dzielna.
Przy sumowaniu jest uwzględniany bieżący kontekst, co oznacza, że w przypadku dodania formuły do kolumny obliczeniowej stosowany jest kontekst wiersza, a w przypadku dodania formuły jako miary do tabeli przestawnej stosowane są wszelkie filtry zastosowane do tej tabeli (kontekst filtru).
Druga część formuły oblicza mianownik.WSZYSTKIE funkcja zastępuje wszelkie filtry zastosowane do Products tabela.
Aby uzyskać więcej informacji, w tym szczegółowe przykłady Zobacz Funkcja ALL (język DAX).
Usuwanie określonych filtrów za pomocą funkcji ALLEXCEPT
Funkcja ALLEXCEPT również usuwa istniejące filtry, ale można określić, że niektóre z nich mają zostać zachowane.Nazwy kolumn podawane jako argumenty funkcji ALLEXCEPT określają, które kolumny mają być nadal filtrowane.Jeśli planowane jest usunięcie filtrów z większości kolumn, ale nie ze wszystkich, wygodniej jest użyć funkcji ALLEXCEPT niż ALL.Funkcja ALLEXCEPT jest szczególnie przydatna w przypadku tworzenia tabel przestawnych, które mogą być filtrowane według wielu różnych kolumn, gdy użytkownik chce sterować wartościami używanymi w formule.Aby uzyskać więcej informacji, w tym szczegółowy przykład sposobu korzystania z ALLEXCEPT tabela przestawna, zobacz Funkcja ALLEXCEPT (język DAX).