Funkcja EARLIER (język DAX)
Zwraca bieżącą wartość określona kolumna przebiegu zewnętrznej oceny wspomnianej kolumnie.
Funkcja EARLIER jest przydatna do obliczeń zagnieżdżonych, w których pewna wartość ma być używana jako dane wejściowe i generować obliczenia oparte na tych danych.W programie Microsoft Excel można wykonać takie obliczenia tylko w kontekście bieżącego wiersza; Jednakże w PowerPivot można przechowywać wartości danych wejściowych i dokonaj obliczeń danych z całej tabela.
Funkcja EARLIER jest używana przede wszystkim w kontekście kolumn obliczeniowych.
Składnia
EARLIER(<column>, <number>)
Parametry
Termin |
Definicja |
---|---|
kolumna |
Kolumna lub wyrażenie dające w wyniku kolumnę. |
liczba |
(Opcjonalnie) Liczba dodatnia przebiegu zewnętrznej oceny. Następny zewnętrzny poziom obliczania jest reprezentowany przez wartość 1; dwa poziomy na zewnątrz — przez wartość 2 itd. W przypadku pominięcia tego argumentu wartością domyślną jest 1. |
Wartość właściwości/wartość zwracana
Bieżąca wartość wiersza z kolumna w liczba przebiegów zewnętrznej oceny.
Wyjątki
Opis błędów
Uwagi
EARLIER powiedzie się, jeśli kontekst wiersza do przed rozpoczęciem skanowania tabela.W przeciwnym wypadku funkcja zwraca błąd.
Wydajność EARLIER może być wolne, ponieważ jego teoretycznie może mieć wykonywać różne operacje jest zbliżony do całkowitej liczby wierszy (kolumna) tę samą liczbę (w zależności od składni wyrażenie).Jeśli na przykład kolumna zawiera 10 wierszy, może być wymaganych około 100 operacji; w przypadku 100 wierszy może być wykonywanych około 10 000 operacji.
Ostrzeżenie
W praktyce aparat VertiPaq dokonuje optymalizacji w celu zmniejszenia rzeczywistej liczby obliczeń, ale należy zachować ostrożność przy tworzeniu formuł, w których występuje rekursja.
Przykład
Użycie funkcji EARLIER zostanie zilustrowane za pomocą scenariusza, w którym jest obliczana wartość klasyfikacji, a następnie wartość ta jest używana w innych obliczeniach.
Poniższy przykład jest oparty na prostej tabela, a ProductSubcategory, która pokazuje całkowitą wielkość sprzedaży dla każdego ProductSubcategory.
Końcową tabelę, w tym kolumnę klasyfikacji, pokazano poniżej.
ProductSubcategoryKey |
EnglishProductSubcategoryName |
TotalSubcategorySales |
SubcategoryRanking |
---|---|---|---|
18 |
Bib-Shorts |
$156,167.88 |
18 |
26 |
Bike Racks |
$220,720.70 |
14 |
27 |
Bike Stands |
$35,628.69 |
30 |
28 |
Bottles and Cages |
$59,342.43 |
24 |
5 |
Bottom Brackets |
$48,643.47 |
27 |
6 |
Brakes |
$62,113.16 |
23 |
19 |
Caps |
$47,934.54 |
28 |
7 |
Chains |
$8,847.08 |
35 |
29 |
Cleaners |
$16,882.62 |
32 |
8 |
Cranksets |
$191,522.09 |
15 |
9 |
Derailleurs |
$64,965.33 |
22 |
30 |
Fenders |
$41,974.10 |
29 |
10 |
Forks |
$74,727.66 |
21 |
20 |
Gloves |
$228,353.58 |
12 |
4 |
Handlebars |
$163,257.06 |
17 |
11 |
Headsets |
$57,659.99 |
25 |
31 |
Helmets |
$451,192.31 |
9 |
32 |
Hydration Packs |
$96,893.78 |
20 |
21 |
Jerseys |
$699,429.78 |
7 |
33 |
Lights |
|
36 |
34 |
Locks |
$15,059.47 |
33 |
1 |
Mountain Bikes |
$34,305,864.29 |
2 |
12 |
Mountain Frames |
$4,511,170.68 |
4 |
35 |
Panniers |
|
36 |
13 |
Pedals |
$140,422.20 |
19 |
36 |
Pumps |
$12,695.18 |
34 |
2 |
Road Bikes |
$40,551,696.34 |
1 |
14 |
Road Frames |
$3,636,398.71 |
5 |
15 |
Saddles |
$52,526.47 |
26 |
22 |
Shorts |
$385,707.80 |
10 |
23 |
Socks |
$28,337.85 |
31 |
24 |
Tights |
$189,179.37 |
16 |
37 |
Tires and Tubes |
$224,832.81 |
13 |
3 |
Touring Bikes |
$13,334,864.18 |
3 |
16 |
Touring Frames |
$1,545,344.02 |
6 |
25 |
Vests |
$240,990.04 |
11 |
17 |
Wheels |
$648,240.04 |
8 |
Tworzenie wartości klasyfikacji
Jednym ze sposobów uzyskania wartości klasyfikacji dla danej wartości w wierszu jest zliczenie liczby wierszy w tej samej tabeli zawierających wartość większą (lub mniejszą) niż wiersz porównywany.W przypadku tej techniki zwracana jest wartość pusta lub zero dla najwyższej wartości w tabeli, podczas gdy wartości równe mają tę samą wartość klasyfikacji, a następna wartość (po wartościach równych) ma niekolejną wartość klasyfikacji.Zobacz przykład poniżej.
Nowe kolumna obliczeniowa, SubCategorySalesRanking, jest tworzony przy użyciu następującej formuły.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
W poniższej procedurze bardziej szczegółowo opisano metodę obliczania.
EARLIER funkcja pobiera wartość TotalSubcategorySales dla bieżącego wiersza w tabela.W tym przypadku, ponieważ proces zaczyna się, jest to pierwszy wiersz w tabeli.
EARLIER ([TotalSubcategorySales]) wynikiem $156,167.88, bieżącego wiersza w zewnętrznej pętli.
FILTER Teraz funkcja zwraca tabela, w którym wszystkie wiersze miały wartość TotalSubcategorySales większy niż $156,167.88 (która jest wartością bieżącą dla EARLIER).
COUNTROWS Funkcja zlicza wiersze tabela filtrowane i przypisuje wartości do nowej kolumna obliczeniowa w bieżącym wierszu plus 1.Dodanie wartości 1 zapobiega przyjęciu wartości pustej przez najwyższą wartość klasyfikacji.
Formuła kolumny obliczeniowej przechodzi do następnego wiersza i powtarza kroki od 1 do 4.Te kroki są powtarzane do osiągnięcia końca tabeli.
EARLIER Funkcja zawsze otrzyma wartość kolumna przed bieżącą operację tabela.Aby była pobierana wartość z pętli wcześniejszej, należy dla drugiego argumentu ustawić wartość 2.