EARLIER
Gilt für:Berechnete SpalteBerechnete TabelleMeasureVisuelle Berechnung
Gibt den aktuellen Wert der angegebenen Spalte in einem äußeren Auswertungsdurchlauf der angegebenen Spalte zurück.
EARLIER eignet sich für geschachtelte Berechnungen, bei denen ein bestimmter Wert als Eingabe zum Erstellen von Berechnungen verwendet wird. In Microsoft Excel können solche Berechnungen nur im Kontext der aktuellen Zeile durchgeführt werden. In DAX können Sie jedoch den Wert der Eingabe speichern und Berechnungen unter Verwendung von Daten aus der gesamten Tabelle durchführen.
EARLIER wird häufig im Kontext von berechneten Spalten verwendet.
Syntax
EARLIER(<column>, <number>)
Parameter
Begriff | Definition |
---|---|
Säulendiagramm | Eine Spalte oder ein Ausdruck, der in eine Spalte aufgelöst wird. |
num | (Optional) Eine positive Zahl für den äußeren Auswertungsdurchlauf. Die nächste Auswertungsebene nach oben wird durch 1 dargestellt, zwei Ebenen nach oben durch 2 usw. Wird kein Wert angegeben, lautet der Standardwert 1. |
Rückgabewert
Der aktuelle Wert der Zeile für die Spalte bei der Anzahl von äußeren Auswertungsdurchläufen.
Ausnahmen
Beschreibung von Fehlern.
Bemerkungen
EARLIER ist erfolgreich, wenn vor Beginn des Tabellenscans ein Zeilenkontext vorhanden ist. Andernfalls wird ein Fehler zurückgegeben.
Beim Ausführen von EARLIER kann es zu Leistungsproblemen kommen, da theoretisch eine Anzahl von Vorgängen ausgeführt werden muss, die nahezu der Gesamtzahl der Zeilen (in der Spalte) multipliziert mit sich selbst entspricht (je nach Syntax des Ausdrucks). Befinden sich in der Spalte beispielsweise 10 Zeilen, können bis zu 100 Vorgänge erforderlich sein. Bei 100 Zeilen müssen schon nahezu 10.000 Vorgänge ausgeführt werden.
Die Verwendung dieser Funktion im DirectQuery-Modus wird nicht unterstützt, wenn sie in berechneten Spalten oder RLS-Regeln (Row-Level Security) eingesetzt wird.
Hinweis
In der Praxis führt die In-Memory-Analyse-Engine VertiPaq Optimierungen durch, um die tatsächliche Anzahl von Berechnungen zu reduzieren. Sie sollten jedoch beim Erstellen von Formeln vorsichtig sein, die Rekursion beinhalten.
Beispiel
Um die Verwendung von EARLIER veranschaulichen zu können, ist ein Szenario erforderlich, für das ein Rangwert berechnet und anschließend in weiteren Berechnungen verwendet wird.
Das folgende Beispiel basiert auf der einfachen Tabelle ProductSubcategory, die den Gesamtumsatz für jede Produktunterkategorie auflistet.
Die fertige Tabelle, einschließlich der Spalte mit der Rangfolge, sieht folgendermaßen aus:
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Trägershorts | 156.167,88 $ | 18 |
26 | Fahrradträger | 220.720,70 $ | 14 |
27 | Fahrradständer | 35.628,69 $ | 30 |
28 | Trinkflaschen und Körbe | 59.342,43 $ | 24 |
5 | Tretlager | 48.643,47 $ | 27 |
6 | Bremsen | 62.113,16 $ | 23 |
19 | Obergrenzen | 47.934,54 $ | 28 |
7 | Ketten | 8.847,08 $ | 35 |
29 | Reinigungsmittel | 16.882,62 $ | 32 |
8 | Kurbelsätze | 191.522,09 $ | 15 |
9 | Schaltwerke | 64.965,33 $ | 22 |
30 | Schutzbleche | 41.974,10 $ | 29 |
10 | Radgabeln | 74.727,66 $ | 21 |
20 | Handschuhe | 228.353,58 $ | 12 |
4 | Lenkstangen | 163.257,06 $ | 17 |
11 | Lenkköpfe | 57.659,99 $ | 25 |
31 | Fahrradhelme | 451.192,31 $ | 9 |
32 | Trinkrucksäcke | 96.893,78 $ | 20 |
21 | Trikots | 699.429,78 $ | 7 |
33 | Leuchten | 36 | |
34 | Sperren | 15.059,47 $ | 33 |
1 | Mountainbikes | 34.305.864,29 $ | 2 |
12 | Rahmen für Mountainbikes | 4.511.170,68 $ | 4 |
35 | Radtaschen | 36 | |
13 | Pedale | 140.422,20 $ | 19 |
36 | Luftpumpen | 12.695,18 $ | 34 |
2 | Rennräder | 40.551.696,34 $ | 1 |
14 | Rahmen für Rennräder | 3.636.398,71 $ | 5 |
15 | Sättel | 52.526,47 $ | 26 |
22 | Kurze Radhosen | 385.707,80 $ | 10 |
23 | Socken | 28.337,85 $ | 31 |
24 | Lange Radhosen | 189.179,37 $ | 16 |
37 | Reifen und Schläuche | 224.832,81 $ | 13 |
3 | Tourenräder | 13.334.864,18 $ | 3 |
16 | Rahmen für Tourenräder | 1.545.344,02 $ | 6 |
25 | Jacken | 240.990,04 $ | 11 |
17 | Räder | 648.240,04 $ | 8 |
Erstellen eines Rangwerts
Eine Möglichkeit zum Erstellen des Rangwerts für einen bestimmten Wert in einer Zeile besteht darin, die Anzahl der Zeilen in derselben Tabelle zu bestimmen, deren Wert größer (oder kleiner) ist. Dabei erhält der höchste Wert in der Tabelle den Wert 0 (null) oder einen leeren Wert. Identische Werte erhalten denselben Rangwert und der jeweils nachfolgende Wert (im Anschluss an die identischen Werte) keinen fortlaufenden Rangwert. Dies wird im Beispiel unten verdeutlicht.
Mit der folgenden Formel wird eine neue berechnete Spalte namens SubCategorySalesRanking erstellt:
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
In den folgenden Schritten wird die Berechnungsmethode ausführlicher beschrieben:
Die EARLIER-Funktion ruft den Wert für TotalSubcategorySales für die aktuelle Zeile in der Tabelle ab. Da in diesem Fall der Prozess gestartet wird, handelt es sich um die erste Zeile in der Tabelle.
EARLIER([TotalSubcategorySales]) ergibt 156.167,88 $, die aktuelle Zeile in der äußeren Schleife.
Die FILTER-Funktion gibt nun eine Tabelle zurück, in der alle Zeilen für TotalSubcategorySales einen Wert aufweisen, der größer ist als 156.167,88 $ (dem aktuellen Wert für EARLIER).
Mit der COUNTROWS-Funktion werden die Zeilen der gefilterten Tabelle gezählt, und dieser Wert plus 1 wird der neuen berechneten Spalte in der aktuellen Zeile zugewiesen. Durch die Erhöhung um 1 wird verhindert, dass der oberste Wert einen leeren Wert erhält.
Die berechnete Spaltenformel wechselt zur nächsten Zeile und wiederholt die Schritte 1 bis 4. Dieser Vorgang wird wiederholt, bis das Ende der Tabelle erreicht ist.
Die EARLIER-Funktion ruft immer den Wert der Spalte vor dem aktuellen Tabellenvorgang ab. Wenn Sie einen Wert aus der Schleife davor benötigen, legen Sie das zweite Argument auf 2 fest.