ALL

Zwraca wszystkie wiersze w tabeli lub wszystkie wartości w kolumnie, ignorując wszystkie filtry, które mogły zostać zastosowane. Ta funkcja jest przydatna do czyszczenia filtrów i tworzenia obliczeń we wszystkich wierszach w tabeli.

Składnia

ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )  

Parametry

Termin Definicja
table Tabela, dla której chcesz wyczyścić filtry.
column Kolumna, dla której chcesz wyczyścić filtry.

Argument funkcji ALL musi być odwołaniem do tabeli podstawowej lub odwołaniem do kolumny podstawowej. Nie można używać wyrażeń tabeli ani wyrażeń kolumn z funkcją ALL.

Wartość zwracana

Tabela lub kolumna z usuniętymi filtrami.

Uwagi

  • Ta funkcja nie jest używana przez siebie, ale służy jako funkcja pośrednia, która może służyć do zmiany zestawu wyników, nad którymi wykonywane jest inne obliczenia.

  • Normalne zachowanie w wyrażeniach języka DAX zawierających funkcję ALL() polega na tym, że wszystkie zastosowane filtry zostaną zignorowane. Istnieją jednak pewne scenariusze, w których nie ma to miejsca z powodu automatycznego istnienia technologii języka DAX, która optymalizuje filtrowanie w celu zmniejszenia ilości przetwarzania wymaganego dla niektórych zapytań języka DAX. Przykładem, w którym funkcja autoistnia i funkcja ALL() udostępnia nieoczekiwane wyniki, jest filtrowanie na co najmniej dwóch kolumnach tej samej tabeli (na przykład w przypadku używania fragmentatorów) i istnieje miara w tej samej tabeli, która używa funkcji ALL(). W takim przypadku automatyczne istnienie scali wiele filtrów w jeden i filtruje tylko istniejące kombinacje wartości. Ze względu na to scalanie miara zostanie obliczona na istniejących kombinacjach wartości, a wynik będzie oparty na filtrowanych wartościach zamiast wszystkich wartości zgodnie z oczekiwaniami. Aby dowiedzieć się więcej o autoistnieniu i jego wpływie na obliczenia, zobacz artykuł Microsoft MVP Alberto Ferrari's Understanding DAX Auto-Exist (Opis autoistnia języka DAX) w temacie sql.bi.com.

  • W poniższej tabeli opisano sposób używania funkcji ALL i ALLEXCEPT w różnych scenariuszach.

    Funkcja i użycie opis
    ALL() Usuwa wszystkie filtry wszędzie. Funkcja ALL() może służyć tylko do czyszczenia filtrów, ale nie do zwracania tabeli.
    ALL(Tabela) Usuwa wszystkie filtry z określonej tabeli. W efekcie funkcja ALL(Tabela) zwraca wszystkie wartości w tabeli, usuwając wszystkie filtry z kontekstu, które w przeciwnym razie mogły zostać zastosowane. Ta funkcja jest przydatna podczas pracy z wieloma poziomami grupowania i chce utworzyć obliczenie, które tworzy stosunek wartości zagregowanej do wartości całkowitej. W pierwszym przykładzie pokazano ten scenariusz.
    ALL (Kolumna[, Kolumna[, ...]]) Usuwa wszystkie filtry z określonych kolumn w tabeli; wszystkie inne filtry w innych kolumnach w tabeli nadal mają zastosowanie. Wszystkie argumenty kolumn muszą pochodzić z tej samej tabeli. Wariant ALL(Column) jest przydatny, gdy chcesz usunąć filtry kontekstowe dla co najmniej jednej konkretnej kolumny i zachować wszystkie inne filtry kontekstowe. W drugim i trzecim przykładzie pokazano ten scenariusz.
    ALLEXCEPT(Tabela, Kolumna1 [,Kolumna2]...) Usuwa wszystkie filtry kontekstowe w tabeli z wyjątkiem filtrów, które są stosowane do określonych kolumn. Jest to wygodny skrót w sytuacjach, w których chcesz usunąć filtry dla wielu, ale nie wszystkich kolumn w tabeli.
  • Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach zabezpieczeń na poziomie wiersza.

Przykład 1

Obliczanie współczynnika sprzedaży kategorii do łącznej sprzedaży

Załóżmy, że chcesz znaleźć kwotę sprzedaży dla bieżącej komórki w tabeli przestawnej podzielonej przez łączną sprzedaż dla wszystkich odsprzedawców. Aby upewnić się, że mianownik jest taki sam niezależnie od tego, jak użytkownik tabeli przestawnej może filtrować lub grupować dane, należy zdefiniować formułę, która używa wszystkich do utworzenia poprawnej sumy końcowej.

W poniższej tabeli przedstawiono wyniki utworzenia nowej miary All Reseller Sales Ratio (Stosunek sprzedaży odsprzedawcy) przy użyciu formuły przedstawionej w sekcji kodu. Aby zobaczyć, jak to działa, dodaj pole CalendarYear do obszaru Etykiety wierszy tabeli przestawnej i dodaj pole ProductCategoryName do obszaru Etykiety kolumn. Następnie przeciągnij miarę All Reseller Sales Ratio (Stosunek sprzedaży wszystkich odsprzedawców) do obszaru Values (Wartości ) tabeli przestawnej. Aby wyświetlić wyniki jako wartości procentowe, użyj funkcji formatowania programu Excel, aby zastosować formatowanie procentowe do komórek zawierających miarę.

Etykiety wierszy Akcesoria Rowery Odzież Elementy Suma końcowa
2005 0,02% 9.10% 0,04% 0.75% 9.91%
2006 0.11% 24.71% 0.60% 4.48% 29.90%
2007 0.36% 31.71% 1,07% 6.79% 39.93%
2008 0.20% 16.95% 0,48% 2.63% 20.26%
Suma końcowa 0.70% 82.47% 2.18% 14,65% 100,00%

Formuła

= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  

Formuła jest skonstruowana w następujący sposób:

  1. Licznik , SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])jest sumą wartości w ResellerSales_USD[SalesAmount_USD] dla bieżącej komórki w tabeli przestawnej z filtrami kontekstowymi zastosowanymi w kolumnach CalendarYear i ProductCategoryName.

  2. W przypadku mianownika należy zacząć od określenia tabeli, ResellerSales_USD i użycia funkcji ALL w celu usunięcia wszystkich filtrów kontekstowych w tabeli.

  3. Następnie użyjesz funkcji SUMX, aby zsumować wartości w kolumnie ResellerSales_USD[SalesAmount_USD]. Innymi słowy, otrzymujesz sumę ResellerSales_USD[SalesAmount_USD] dla wszystkich odsprzedawców sprzedaży.

Przykład 2

Oblicz stosunek sprzedaży produktu do łącznej sprzedaży w bieżącym roku

Załóżmy, że chcesz utworzyć tabelę przedstawiającą procent sprzedaży w porównaniu z latami dla każdej kategorii produktów (ProductCategoryName). Aby uzyskać wartość procentową dla każdego roku dla każdej wartości ProductCategoryName, należy podzielić sumę sprzedaży dla danego roku i kategorii produktów według sumy sprzedaży dla tej samej kategorii produktów w ciągu wszystkich lat. Innymi słowy, chcesz zachować filtr productCategoryName, ale usunąć filtr w roku podczas obliczania mianownika wartości procentowej.

W poniższej tabeli przedstawiono wyniki utworzenia nowej miary Reseller Sales Year przy użyciu formuły przedstawionej w sekcji kodu. Aby zobaczyć, jak to działa, dodaj pole CalendarYear do obszaru Etykiety wierszy tabeli przestawnej i dodaj pole ProductCategoryName do obszaru Etykiety kolumn. Aby wyświetlić wyniki jako wartości procentowe, użyj funkcji formatowania programu Excel, aby zastosować format liczb procentowych do komórek zawierających miarę Reseller Sales Year.

Etykiety wierszy Akcesoria Rowery Odzież Elementy Suma końcowa
2005 3.48% 11.03% 1.91% 5.12% 9.91%
2006 16.21% 29.96% 27.29% 30.59% 29.90%
2007 51.62% 38.45% 48.86% 46.36% 39.93%
2008 28.69% 20.56% 21.95% 17.92% 20.26%
Suma końcowa 100,00% 100,00% 100,00% 100,00% 100,00%

Formuła

= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))  

Formuła jest skonstruowana w następujący sposób:

  1. Licznik , SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])jest sumą wartości w ResellerSales_USD[SalesAmount_USD] dla bieżącej komórki w tabeli przestawnej z filtrami kontekstowymi zastosowanymi w kolumnach CalendarYear i ProductCategoryName.

  2. W przypadku mianownika usuń istniejący filtr w kolumnie CalendarYear przy użyciu funkcji ALL(Column). Oblicza sumę pozostałych wierszy w tabeli ResellerSales_USD po zastosowaniu istniejących filtrów kontekstu z etykiet kolumn. Efekt netto polega na tym, że dla mianownika suma jest obliczana na podstawie wybranej wartości ProductCategoryName (filtr kontekstu dorozumianego) i dla wszystkich wartości w roku.

Przykład 3

Obliczanie udziału kategorii produktów w łącznej sprzedaży na rok

Załóżmy, że chcesz utworzyć tabelę, która przedstawia procent sprzedaży dla każdej kategorii produktów w ujęciu rocznym. Aby uzyskać wartość procentową dla każdej kategorii produktów w danym roku, należy obliczyć sumę sprzedaży dla tej konkretnej kategorii produktów (ProductCategoryName) w roku n, a następnie podzielić wynikową wartość przez sumę sprzedaży dla roku n dla wszystkich kategorii produktów. Innymi słowy, chcesz zachować filtr w roku, ale usunąć filtr w kolumnie ProductCategoryName podczas obliczania mianownika wartości procentowej.

W poniższej tabeli przedstawiono wyniki utworzenia nowej miary Reseller Sales CategoryName przy użyciu formuły pokazanej w sekcji kodu. Aby zobaczyć, jak to działa, dodaj pole CalendarYear do obszaru Etykiety wierszy tabeli przestawnej i dodaj pole ProductCategoryName do obszaru Etykiety kolumn. Następnie dodaj nową miarę do obszaru Wartości tabeli przestawnej. Aby wyświetlić wyniki jako wartości procentowe, użyj funkcji formatowania programu Excel, aby zastosować format liczb procentowych do komórek zawierających nową miarę Reseller Sales CategoryName.

Etykiety wierszy Akcesoria Rowery Odzież Elementy Suma końcowa
2005 0.25% 91.76% 0.42% 7.57% 100,00%
2006 0.38% 82.64% 1.99% 14.99% 100,00%
2007 0.90% 79.42% 2.67% 17.01% 100,00%
2008 0,99% 83.69% 2.37% 12.96% 100,00%
Suma końcowa 0.70% 82.47% 2.18% 14,65% 100,00%

Formuła

= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))  

Formuła jest skonstruowana w następujący sposób:

  1. Licznik SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]), jest sumą wartości w ResellerSales_USD[SalesAmount_USD] dla bieżącej komórki w tabeli przestawnej z filtrami kontekstowymi zastosowanymi w polach CalendarYear i ProductCategoryName.

  2. W przypadku mianownika użyjesz funkcji ALL(Column), aby usunąć filtr w kolumnie ProductCategoryName i obliczyć sumę pozostałych wierszy w tabeli ResellerSales_USD po zastosowaniu istniejących filtrów kontekstu z etykiet wierszy. Efekt netto polega na tym, że dla mianownika suma jest obliczana na podstawie wybranego roku (filtr kontekstu implikowanego) i dla wszystkich wartości ProductCategoryName.

Funkcje filtrowania
ALL, funkcja
ALLEXCEPT, funkcja
FILTER, funkcja