EARLIER
gäller för:beräknad kolumnberäknad tabellMåttVisuell beräkning
Returnerar det aktuella värdet för den angivna kolumnen i ett yttre utvärderingspass för den nämnda kolumnen.
EARLIER är användbart för kapslade beräkningar där du vill använda ett visst värde som indata och skapa beräkningar baserat på dessa indata. I Microsoft Excel kan du bara göra sådana beräkningar inom ramen för den aktuella raden. Men i DAX kan du lagra värdet för indata och sedan göra beräkningar med hjälp av data från hela tabellen.
EARLIER används främst i kontexten för beräknade kolumner.
Syntax
EARLIER(<column>, <number>)
Parametrar
Term | Definition |
---|---|
column |
En kolumn eller ett uttryck som matchar en kolumn. |
num |
(Valfritt) Ett positivt tal till det yttre utvärderingspasset. Nästa utvärderingsnivå representeras av 1; två nivåer ut representeras av 2 och så vidare. När det utelämnas är standardvärdet 1. |
Returvärde
Det aktuella värdet för raden, från column
, vid number
av yttre utvärderingspass.
Undantag
Beskrivning av fel
Anmärkningar
EARLIER
lyckas om det finns en radkontext före början av tabellgenomsökningen. Annars returneras ett fel.Prestandan för
EARLIER
kan vara långsam eftersom den teoretiskt sett kan behöva utföra ett antal åtgärder som ligger nära det totala antalet rader (i kolumnen) gånger samma tal (beroende på uttryckets syntax). Om du till exempel har 10 rader i kolumnen kan cirka 100 åtgärder krävas. Om du har 100 rader kan nästan 10 000 åtgärder utföras.Den här funktionen stöds inte för användning i DirectQuery-läge när den används i beräknade kolumner eller säkerhetsregler på radnivå (RLS).
Not
I praktiken utför VertiPaqs minnesinterna analysmotor optimeringar för att minska det faktiska antalet beräkningar, men du bör vara försiktig när du skapar formler som inbegriper rekursion.
Exempel
För att illustrera användningen av EARLIERär det nödvändigt att skapa ett scenario som beräknar ett rankningsvärde och sedan använder det rangvärdet i andra beräkningar.
Följande exempel baseras på den här enkla tabellen, ProductSubcategory
, som visar den totala försäljningen för varje ProductSubcategory.
Den slutliga tabellen, inklusive rangordningskolumnen, visas här.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | UnderkategoriRankning |
---|---|---|---|
18 | Bib-Shorts | $156,167.88 | 18 |
26 | Cykelställ | $220,720.70 | 14 |
27 | Cykelställ | $35,628.69 | 30 |
28 | Flaskor och burar | $59,342.43 | 24 |
5 | Nedre hakparenteser | $48,643.47 | 27 |
6 | Bromsar | $62,113.16 | 23 |
19 | Caps | $47,934.54 | 28 |
7 | Kedjor | $8,847.08 | 35 |
29 | Städare | $16,882.62 | 32 |
8 | Vevuppsättningar | $191,522.09 | 15 |
9 | Derailleurs | $64,965.33 | 22 |
30 | Fendrar | $41,974.10 | 29 |
10 | Gafflar | $74,727.66 | 21 |
20 | Handskar | $228,353.58 | 12 |
4 | Styre | $163,257.06 | 17 |
11 | Headset | $57,659.99 | 25 |
31 | Hjälmar | $451,192.31 | 9 |
32 | Vätskepaket | $96,893.78 | 20 |
21 | Tröjor | $699,429.78 | 7 |
33 | Ljus | 36 | |
34 | Lås | $15,059.47 | 33 |
1 | Mountain Bikes | $34,305,864.29 | 2 |
12 | Fjällramar | $4,511,170.68 | 4 |
35 | Korgar | 36 | |
13 | Pedaler | $140,422.20 | 19 |
36 | Pumpar | $12,695.18 | 34 |
2 | Landsvägscyklar | $40,551,696.34 | 1 |
14 | Vägramar | $3,636,398.71 | 5 |
15 | Sadlar | $52,526.47 | 26 |
22 | Kortbyxor | $385,707.80 | 10 |
23 | Sockor | $28,337.85 | 31 |
24 | Strumpbyxor | $189,179.37 | 16 |
37 | Däck och rör | $224,832.81 | 13 |
3 | Touringcyklar | $13,334,864.18 | 3 |
16 | Touringramar | $1,545,344.02 | 6 |
25 | Västar | $240,990.04 | 11 |
17 | Hjul | $648,240.04 | 8 |
Skapa ett rankningsvärde
Ett sätt att hämta ett rangvärde för ett givet värde på en rad är att räkna antalet rader i samma tabell som har ett värde som är större (eller mindre) än det som jämförs. Den här tekniken returnerar ett tomt eller nollvärde för det högsta värdet i tabellen, medan lika värden har samma rankningsvärde och nästa värde (efter lika med värdena) har ett icke-efterföljande rankningsvärde. Se exemplet nedan.
En ny beräknad kolumn, SubCategorySalesRanking, skapas med hjälp av följande formel.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
Följande steg beskriver beräkningsmetoden mer detaljerat.
Funktionen
EARLIER
hämtar värdet för TotalSubcategorySales för den aktuella raden i tabellen. I det här fallet, eftersom processen startas, är det den första raden i tabellenEARLIER([TotalSubcategorySales])
utvärderas till 156 167,88 USD, den aktuella raden i den yttre loopen.Funktionen
FILTER
returnerar nu en tabell där alla rader har värdet TotalSubcategorySales större än 156 167,88 USD (vilket är det aktuella värdet förEARLIER
).Funktionen
COUNTROWS
räknar raderna i den filtrerade tabellen och tilldelar värdet till den nya beräknade kolumnen i den aktuella raden plus 1. Du måste lägga till 1 för att förhindra att det högst rankade värdet blir tomt.Formeln för den beräknade kolumnen flyttas till nästa rad och upprepar steg 1 till 4. De här stegen upprepas tills slutet av tabellen har nåtts.
Funktionen EARLIER
hämtar alltid värdet för kolumnen före den aktuella tabellåtgärden. Om du behöver hämta ett värde från loopen innan det anger du det andra argumentet till 2.