Udostępnij za pośrednictwem


Funkcja EARLIER

Zwraca bieżącą wartość określonej kolumny w zewnętrznym przebiegu obliczania wymienionej kolumny.

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 takie obliczenia można wykonywać tylko w kontekście bieżącego wiersza, jednak w języku DAX można przechować wartość danych wejściowych, a następnie wykonać obliczenie przy użyciu danych z całej tabeli.

Funkcja EARLIER jest używana przede wszystkim w kontekście kolumn obliczeniowych.

Składnia

EARLIER(<column>, <number>)

Parametry

Termin

Definicja

column

Kolumna lub wyrażenie dające w wyniku kolumnę.

num

(Opcjonalny) Liczba dodatnia określająca zewnętrzny poziom obliczania.

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 kolumny określonej przez argument kolumna na zewnętrznym poziomie obliczania określonym przez argument liczba.

Wyjątki

Opis błędów

Uwagi

Wykonanie funkcji EARLIER kończy się pomyślnie, jeśli istnieje jakiś kontekst wiersza przed rozpoczęciem skanowania tabeli. W przeciwnym wypadku funkcja zwraca błąd.

Wydajność funkcji EARLIER może być mała, ponieważ teoretycznie liczba wykonywanych przez nią operacji jest bliska kwadratowi łącznej liczby wierszy w kolumnie (zależnie od składni wyrażenia). 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.

[!UWAGA]

W praktyce aparat analizy w pamięci xVelocity (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 tabeli, ProductSubcategory, która pokazuje łączną wielkość sprzedaży dla poszczególnych podkategorii produktów.

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.

Za pomocą poniższej formuły tworzona jest nowa kolumna obliczeniowa SubCategorySalesRanking.

= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1

W poniższej procedurze bardziej szczegółowo opisano metodę obliczania.

  1. Funkcja EARLIER pobiera wartość TotalSubcategorySales dla bieżącego wiersza w tabeli. W tym przypadku, ponieważ proces zaczyna się, jest to pierwszy wiersz w tabeli.

  2. Funkcja EARLIER([TotalSubcategorySales]) zwraca wartość bieżącego wiersza w pętli zewnętrznej, $156,167.88.

  3. Następnie funkcja FILTER zwraca tabelę, w której wszystkie wiersze mają wartość TotalSubcategorySales większą niż $156,167.88 (bieżąca wartość funkcji EARLIER).

  4. Funkcja COUNTROWS zlicza wiersze przefiltrowanej tabeli i przypisuje uzyskaną wartość nowej kolumnie obliczeniowej w bieżącym wierszu plus 1. Dodanie wartości 1 zapobiega przyjęciu wartości pustej przez najwyższą wartość klasyfikacji.

  5. 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.

Funkcja EARLIER zawsze pobiera wartość kolumny sprzed bieżącej operacji tabeli. Aby była pobierana wartość z pętli wcześniejszej, należy dla drugiego argumentu ustawić wartość 2.

Zobacz także

Odwołanie

Funkcja EARLIEST

Inne zasoby

Funkcje filtru (język DAX)