Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

W tej sekcji opisano, jak tworzyć filtry w formułach języka DAX (Data Analysis Expressions). W celu ograniczenia wartości z danych źródłowych używanych w obliczeniach można tworzyć filtry w formułach. W tym celu należy określić tabelę jako dane wejściowe formuły, a następnie definiować wyrażenie filtru. Wyrażenie filtru używane do wykonywania zapytań dotyczących danych i zwraca tylko podzbiór danych źródłowych. Filtr jest stosowany dynamicznie przy każdej aktualizacji wyników formuły w zależności od bieżącego kontekstu danych.

W tym artykule

Tworzenie filtru w tabeli używanej w formule

W formułach, w których jako dane wejściowe wprowadzane są dane tabeli, można stosować filtry. Zamiast wprowadzać nazwę tabeli, należy użyć funkcji FILTRUJ w celu zdefiniowania podzbioru wierszy z określonej tabeli. Podzbiór ten jest przekazywany do innej funkcji na przykład do operacji, takich jak agregacje niestandardowe.

Załóżmy na przykład, że masz tabelę danych z informacjami o zamówieniach u odsprzedawców i chcesz obliczyć, ile sprzedał każdy odsprzedawca. Chcesz jednak pokazać kwotę sprzedaży tylko dla tych sprzedawców, którzy sprzedali wiele jednostek produktów, które są bardziej wartościowe. Następująca formuła, oparta na przykładowym skoroszycie języka DAX, przedstawia jeden z przykładów, w jaki sposób można utworzyć to obliczenie przy użyciu filtru:

=SUMX(
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Ilość] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • Pierwsza część formuły określa jedną z funkcji agreg Power Pivot, która przyjmuje tabelę jako argument. Wartość funkcji SUMA.X oblicza sumę w tabeli.

  • Druga część formuły, FILTER(table, expression),wskazuje, SUMX których danych użyć. SUMX tabeli lub wyrażenia, które powoduje jej wynik. W tym miejscu zamiast używać wszystkich danych w tabeli, można użyć FILTER , aby określić, które wiersze z tabeli mają być używane.

    Wyrażenie filtru zawiera dwie części: pierwsza część to nazwa tabeli, do której ma zastosowanie filtr. W drugiej części zdefiniowano wyrażenie, które ma być filtrowane jako warunek filtru. W tym przypadku filtrowane są odsprzedawcy, którzy sprzedali więcej niż 5 jednostek i produkty kosztujące więcej niż 100 zł. Operator; &&, jest operatorem logicznym AND, który wskazuje, że obie części warunku muszą być spełnione, aby wiersz należał do odfiltrowanych podzbiorów.

  • Trzecia część formuły informuje funkcję SUMX , które wartości powinny być sumowane. W tym przypadku używasz tylko kwoty sprzedaży.

    Pamiętaj, że funkcje takie jak FILTRUJ, które zwracają tabelę, nigdy nie zwracają tabel ani wierszy bezpośrednio, ale zawsze są osadzone w innej funkcji. Aby uzyskać więcej informacji na temat funkcji FILTRUJ i innych funkcji używanych do filtrowania, w tym więcej przykładów, zobacz Funkcje filtru (język DAX).

    Uwaga: Na wyrażenie filtru wpływa kontekst, w którym jest ono używane. Jeśli na przykład używasz filtru w miarzie, a miara jest używana w tabeli przestawnej lub programie wykres przestawny, na podzbiór zwracanych danych może mieć wpływ dodatkowe filtry lub fragmentatory zastosowane przez użytkownika w tabeli przestawnej. Aby uzyskać więcej informacji o kontekście, zobacz Kontekst w formułach języka DAX.

Filtry, które usuwają duplikaty

Oprócz filtrowania określonych wartości można zwrócić unikatowy zestaw wartości z innej tabeli lub innej kolumny. Może to być przydatne, gdy trzeba zliczyć wartości unikatowe w kolumnie lub użyć listy unikatowych wartości do innych operacji. Język DAX zawiera dwie funkcje zwracania odrębnych wartości: funkcja DISTINCT i funkcja VALUES.

  • Funkcja DISTINCT sprawdza pojedynczą kolumnę podaną jako argument funkcji i zwraca nową kolumnę zawierającą tylko odrębne wartości.

  • Funkcja WARTOŚCI zwraca również listę unikatowych wartości, ale także zwraca nieznany członek. Jest to przydatne, gdy używasz wartości z dwóch tabel, które są połączone relacją, a w jednej tabeli brakuje wartości, a w drugiej tabeli brakuje jej. Aby uzyskać więcej informacji na temat nieznanego członka, zobacz Kontekst w formułach języka DAX.

Obie te funkcje zwracają całą kolumnę wartości. dlatego za pomocą tych funkcji można uzyskać listę wartości, które są następnie przekazywane do innej funkcji. Na przykład za pomocą następującej formuły można uzyskać listę unikatowych produktów sprzedanych przez określonego odsprzedawcę, używając unikatowego klucza produktu, a następnie policzyć produkty na tej liście przy użyciu funkcji LICZ.ROWS:

=LICZ.ROWY(DISTINCT('ResellerSales_USD'[Klucz Produkcie]))

Początek strony

Wpływ kontekstu na filtry

Po dodaniu formuły języka DAX do tabeli przestawnej lub języka wykres przestawny może na to mieć wpływ kontekst wyników formuły. Jeśli pracujesz z tabelą Power Pivot, kontekstem jest bieżący wiersz i jego wartości. Jeśli pracujesz w tabeli przestawnej lub tabeli wykres przestawny, kontekst oznacza zestaw lub podzbiór danych zdefiniowanych przez operacje, takie jak kropka lub filtrowanie. Projekt tabeli przestawnej lub tabeli wykres przestawny także własnym kontekstem. Jeśli na przykład utworzysz tabelę przestawną, która grupuje sprzedaż według regionu i roku, w tabeli przestawnej będą widoczne tylko dane dotyczące tych regionów i lat. Dlatego wszelkie miary, które dodajesz 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.

Początek strony

Usuwanie filtrów

Podczas pracy ze złożonymi formułami warto dokładnie wiedzieć, czym są bieżące filtry, lub zmodyfikować część filtru w formule. Język DAX udostępnia kilka funkcji, które umożliwiają usuwanie filtrów i kontrolowanie, które kolumny są zachowywane w ramach bieżącego kontekstu filtru. Ta sekcja zawiera omówienie wpływu tych funkcji na wyniki w formule.

Zastępowanie wszystkich filtrów funkcją ALL

Możesz użyć funkcji ALL , aby zastąpić filtry, które zostały wcześniej zastosowane, i przywrócić wszystkie wiersze tabeli do funkcji wykonującej agregowanie lub inną operację. Jeśli jako argumentów do zignorowania użyjemy jednej lub większej liczby kolumn ALL, a nie tabeli, funkcja ALL zwróci wszystkie wiersze, ignorując filtry kontekstowe.

Uwaga: Jeśli znasz terminologia relacyjnej bazy danych, możesz sobie pomylić ALL generując naturalne lewe lewe sprzężenie zewnętrzne wszystkich tabel.

Załóżmy na przykład, że masz tabele Sprzedaż i Produkty i chcesz utworzyć formułę, która będzie obliczać sumę sprzedaży bieżącego produktu podzieloną przez sprzedaż wszystkich produktów. Należy wziąć pod uwagę fakt, że jeśli formuła jest używana jako miara, użytkownik tabeli przestawnej może filtrować określony produkt za pomocą fragmentatora z nazwą produktu w wierszach. Dlatego, aby uzyskać prawdziwą wartość mianownika, niezależnie od filtrów i fragmentatorów, musisz dodać funkcję WSZYSTKIE, aby zastąpić filtry. Poniżej przedstawiono przykład zastosowania funkcji ALL w celu zastąpienia efektów poprzednich filtrów:

=SUMA (Sprzedaż[Kwota])/SUMX(Sprzedaż[Kwota];FILTRUJ(Sprzedaż;ALL(Produkty)))

  • Pierwsza część formuły, SUMA (Sprzedaż[Kwota]), oblicza licznik.

  • Suma uwzględnia bieżący kontekst, co oznacza, że jeśli dodasz formułę do kolumny obliczeniowej, zostanie zastosowany kontekst wiersza, a jeśli dodasz formułę do tabeli przestawnej jako miarę, wszelkie filtry zastosowane w tabeli przestawnej (kontekst filtru) zostaną zastosowane.

  • Druga część formuły oblicza mianownik. Funkcja WSZYSTKIE zastępuje wszystkie filtry, które mogą zostać zastosowane do Products tabeli.

Aby uzyskać więcej informacji, w tym szczegółowe przykłady, zobacz ALL, funkcja.

Zastępowanie określonych filtrów za pomocą funkcji ALLEXCEPT

Funkcja ALLEXCEPT zastępuje także istniejące filtry, ale można określić, czy niektóre z istniejących filtrów mają zostać zachowane. Kolumny, które zostaną określone jako argumenty funkcji ALLEXCEPT, określają, które kolumny będą nadal filtrowane. Jeśli chcesz zastąpić filtry z większości kolumn, ale nie wszystkich, allEXCEPT jest wygodniejsze niż ALL. Funkcja ALLEXCEPT jest szczególnie przydatna podczas tworzenia tabel przestawnych, które mogą być filtrowane według wielu różnych kolumn i gdy trzeba kontrolować wartości używane w formule. Aby uzyskać więcej informacji, łącznie ze szczegółowym przykładem używania funkcji ALLEXCEPT w tabeli przestawnej, zobacz ALLEXCEPT, funkcja.

Początek strony

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×