Freigeben über


EARLIER-Funktion (DAX)

Gibt den aktuellen Wert der angegebenen Spalte in einer äußeren Auswertungsübergabe der Spalte zurück.

EARLIER ist nützlich für geschachtelte Berechnungen, in denen Sie einen bestimmten Wert als Eingabe verwenden und Berechnungen auf Grundlage dieser Eingabe durchführen möchten. In Microsoft Excel können Sie solche Berechnungen nur innerhalb des Kontexts der aktuellen Zeile ausführen. In PowerPivot hingegen können Sie den Wert der Eingabe speichern und dann Berechnungen mit Daten aus der gesamten Tabelle durchführen.

EARLIER wird meist im Kontext berechneter Spalten verwendet.

Syntax

EARLIER(<column>, <number>)

Parameter

Ausdruck

Definition

column

Eine Spalte oder ein Ausdruck, der zu einer Spalte aufgelöst wird.

num

(Optional) Eine positive Zahl zur äußeren Auswertungsübergabe.

Die nächste Auswertungsebene entspricht 1, die Ebene danach 2 usw.

1 ist der Standardwert, der verwendet wird, wenn Sie keinen Wert eingeben.

Eigenschaftswert/Rückgabewert

Der aktuelle Wert der Zeile in column bei Auswertungsebene number.

Ausnahmen

Fehlerbeschreibung

Hinweise

EARLIER wird erfolgreich ausgeführt, wenn ein Zeilenkontext vor dem Anfang des Tabellenscans vorhanden ist. Andernfalls wird ein Fehler zurückgegeben.

Die Leistung kann sich durch Verwendung von EARLIER verschlechtern, da die Anzahl der auszuführenden Vorgänge theoretisch der mit sich selbst multiplizierten Gesamtanzahl der Zeilen (in der Spalte) entspricht (abhängig von der Syntax des Ausdrucks). Bei 10 Zeilen in der Spalte wären das etwa 100 Vorgänge und bei 100 Zeilen etwa 10.000 Vorgänge.

HinweisHinweis

In der Praxis führt das VertiPaq-Modul Optimierungen aus, um die tatsächliche Anzahl von Berechnungen zu reduzieren. Sie sollten beim Erstellen von Formeln mit Rekursion jedoch vorsichtig sein.

Beispiel

Um die Verwendung von EARLIER zu veranschaulichen, ist ein Szenario erforderlich, in dem ein Rangwert berechnet und dann in anderen Berechnungen verwendet wird.

Das folgende Beispiel basiert auf der einfachen Tabelle ProductSubcategory, die den Gesamtumsatz für jede Produktunterkategorie anzeigt.

Die endgültige Tabelle einschließlich der Rangspalte wird hier angezeigt.

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

Erstellen eines Rangwerts

Eine Möglichkeit, einen Rangwert für einen gegebenen Wert in einer Zeile abzurufen, ist das Zählen der Zeilen in derselben Tabelle, deren Wert größer (oder kleiner) ist als der verglichene Wert. Bei dieser Methode wird ein leerer Wert oder ein Nullwert für den höchsten Wert in der Tabelle zurückgegeben, während gleiche Werte über den gleichen Rangwert verfügen und der nächste Wert (nach den gleichen Werten) über einen nicht fortlaufenden Rangwert verfügt. Siehe unten stehendes Beispiel.

Eine neue berechnete Spalte SubCategorySalesRanking wird mit der folgenden Formel erstellt.

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

Die folgenden Schritte beschreiben die Berechnungsmethode detaillierter.

  1. Die EARLIER-Funktion ruft den Wert von TotalSubcategorySales für die aktuelle Zeile in der Tabelle ab. In diesem Fall handelt es sich um die erste Zeile in der Tabelle zu Beginn des Prozesses.

  2. EARLIER([TotalSubcategorySales]) ergibt $156.167,88, die aktuelle Zeile in der äußeren Schleife.

  3. Die FILTER-Funktion gibt jetzt eine Tabelle zurück, in der alle Zeilen einen TotalSubcategorySales-Wert größer als $156.167,88 (der aktuelle Wert für EARLIER) aufweisen.

  4. Die COUNTROWS-Funktion zählt die Zeilen der gefilterten Tabelle und weist diesen Wert der neu berechneten Spalte in der aktuellen Zeile plus 1 zu. Das Hinzufügen von 1 ist erforderlich, um zu verhindern, dass der höchste Wert in der Rangfolge durch einen leeren Wert ersetzt wird.

  5. Die Formel wiederholt die Schritte 1 bis 4 für die nächste Zeile. Diese Schritte werden wiederholt, bis das Ende der Tabelle erreicht ist.

Die EARLIER-Funktion ruft den Wert der Spalte stets vor dem aktuellen Tabellenvorgang ab. Wenn Sie vorher einen Wert aus der Schleife abrufen müssen, legen Sie das zweite Argument auf 2 fest.

Siehe auch

Verweis

Andere Ressourcen