WCZEŚNIEJ
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Zwraca bieżącą wartość określonej kolumny w zewnętrznym przebiegu oceny wymienionej kolumny.
Funkcja EARLIER jest przydatna w przypadku obliczeń zagnieżdżonych, w których chcesz użyć określonej wartości jako danych wejściowych i utworzyć obliczenia na podstawie tych danych wejściowych. W programie Microsoft Excel można wykonywać takie obliczenia tylko w kontekście bieżącego wiersza; jednak w języku DAX można przechowywać wartość danych wejściowych, a następnie wykonywać obliczenia przy użyciu danych z całej tabeli.
Funkcja EARLIER jest używana głównie w kontekście kolumn obliczeniowych.
Składnia
EARLIER(<column>, <number>)
Parametry
Termin | Definicja |
---|---|
column | Kolumna lub wyrażenie, które jest rozpoznawane jako kolumna. |
Num | (Opcjonalnie) Liczba dodatnia do zewnętrznego przebiegu oceny. Następny poziom oceny jest reprezentowany przez 1; dwa poziomy są reprezentowane przez 2 i tak dalej. W przypadku pominięcia wartości domyślnej to 1. |
Wartość zwracana
Bieżąca wartość wiersza z kolumny na liczbie przebiegów oceny zewnętrznej.
Wyjątki
Opis błędów
Uwagi
Funkcja EARLIER powiedzie się, jeśli istnieje kontekst wiersza przed rozpoczęciem skanowania tabeli. W przeciwnym razie zwraca błąd.
Wydajność funkcji EARLIER może być niska, ponieważ teoretycznie może być konieczne wykonanie wielu operacji zbliżonych do całkowitej liczby wierszy (w kolumnie) o tej samej liczbie (w zależności od składni wyrażenia). Jeśli na przykład masz 10 wierszy w kolumnie, może być wymaganych około 100 operacji; Jeśli masz 100 wierszy, może zostać wykonanych blisko 10 000 operacji.
Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach zabezpieczeń na poziomie wiersza.
Uwaga
W praktyce aparat analityczny VertiPaq w pamięci wykonuje optymalizacje w celu zmniejszenia rzeczywistej liczby obliczeń, ale należy zachować ostrożność podczas tworzenia formuł obejmujących rekursję.
Przykład
Aby zilustrować użycie funkcji EARLIER, należy utworzyć scenariusz, który oblicza wartość rangi, a następnie używa tej wartości klasyfikacji w innych obliczeniach.
Poniższy przykład jest oparty na tej prostej tabeli ProductSubcategory, która przedstawia łączną sprzedaż dla każdej podkategorii ProductSubcategory.
Końcowa tabela, w tym kolumna klasyfikacji, jest pokazana tutaj.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | PodkategoriaRanking |
---|---|---|---|
18 | Bib-Shorts | 156 167,88 USD | 18 |
26 | Stojaki rowerowe | 220 720,70 USD | 14 |
27 | Stojaki rowerowe | 35 628,69 USD | 30 |
28 | Butelki i klatki | 59 342,43 USD | 24 |
5 | Wsporniki dolne | 48 643,47 USD | 27 |
6 | Hamulce | 62 113,16 USD | 23 |
19 | Czapki | 47 934,54 USD | 28 |
7 | Łańcuchy | $8,847.08 | 35 |
29 | Środki czyszczące | 16 882,62 USD | 32 |
8 | Korby | $191,522.09 | 15 |
9 | Przerzutki | 64 965,33 USD | 22 |
30 | Błotniki | 41 974,10 USD | 29 |
10 | Rozwidlenia | 74 727,66 USD | 21 |
20 | Rękawiczki | 228 353,58 USD | 12 |
4 | Kierownice | 163 257,06 USD | 17 |
11 | Zestawy słuchawkowe | 57 659,99 USD | 25 |
31 | Kaski | $451,192.31 | 9 |
32 | Pakiety nawilżające | 96 893,78 USD | 20 |
21 | Jerseys | 699 429,78 USD | 7 |
33 | Światła | 36 | |
34 | Blokady | 15 059,47 USD | 33 |
1 | Rowery górskie | 34 305 864,29 USD | 2 |
12 | Mountain Frames | 4511 170,68 USD | 100 |
35 | Sakwy | 36 | |
13 | Pedały | 140 422,20 USD | 19 |
36 | Pompy | 12 695,18 USD | 34 |
2 | Rowery szosowe | 40 551 696,34 USD | 1 |
14 | Road Frames | $3,636,398,71 | 5 |
15 | Siodła | 52 526,47 USD | 26 |
22 | Spodenki | 385 707,80 USD | 10 |
23 | Skarpety | 28 337,85 USD | 31 |
24 | Rajstopy | $189,179.37 | 16 |
37 | Opony i rury | 224 832,81 USD | 13 |
3 | Touring Bikes | $13,334,864.18 | 3 |
16 | Touring Frames | 1545 344,02 USD | 6 |
25 | Kamizelki | 240 990,04 USD | 11 |
17 | Wheels | 648 240,04 USD | 8 |
Tworzenie wartości rangi
Jednym ze sposobów uzyskania wartości klasyfikacji dla danej wartości w wierszu jest zliczenie liczby wierszy w tej samej tabeli, które mają wartość większą (lub mniejszą) niż ta, która jest porównywana. Ta technika zwraca wartość pustą lub zerową dla najwyższej wartości w tabeli, natomiast równe wartości będą miały tę samą wartość rangi, a następna wartość (po wartościach równych) będzie miała niesuądną wartość klasyfikacji. Zapoznaj się z poniższym przykładem.
Nowa kolumna obliczeniowa SubCategorySalesRanking jest tworzona przy użyciu następującej formuły.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
W poniższych krokach opisano bardziej szczegółowo metodę obliczania.
Funkcja EARLIER pobiera wartość TotalSubcategorySales dla bieżącego wiersza w tabeli. W takim przypadku, ponieważ proces jest uruchamiany, jest to pierwszy wiersz w tabeli
EARLIER([TotalSubcategorySales]) szacuje się na 156 167,88 USD, bieżący wiersz w pętli zewnętrznej.
Funkcja FILTER zwraca teraz tabelę, w której wszystkie wiersze mają wartość TotalSubcategorySales większą niż $156,167.88 (co jest bieżącą wartością wcześniej).
Funkcja COUNTROWS zlicza wiersze przefiltrowanej tabeli i przypisuje tę wartość do nowej kolumny obliczeniowej w bieżącym wierszu plus 1. Dodanie wartości 1 jest konieczne, aby zapobiec utracie wartości w pierwszej klasyfikacji jako pustej.
Formuła kolumny obliczeniowej przechodzi do następnego wiersza i powtarza kroki od 1 do 4. Te kroki są powtarzane do momentu osiągnięcia końca tabeli.
Funkcja EARLIER będzie zawsze pobierać wartość kolumny przed bieżącą operacją tabeli. Jeśli musisz uzyskać wartość z pętli przed tym, ustaw drugi argument na 2.