EARLIEREARLIER

Returnerar det aktuella värdet för den angivna kolumnen i ett yttre utvärderingssteg för den angivna kolumnen.Returns the current value of the specified column in an outer evaluation pass of the mentioned column.

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 som baseras på den indata.EARLIER is useful for nested calculations where you want to use a certain value as an input and produce calculations based on that input. I Microsoft Excel kan du bara göra sådana beräkningar inom kontexten för den aktuella raden. i DAX kan du dock lagra värdet för indata och sedan göra beräkningen med data från hela tabellen.In Microsoft Excel, you can do such calculations only within the context of the current row; however, in DAX you can store the value of the input and then make calculation using data from the entire table.

EARLIER används främst i samband med beräknade kolumner.EARLIER is mostly used in the context of calculated columns.

SyntaxSyntax

EARLIER(<column>, <number>)  

ParametrarParameters

PeriodTerm DefinitionDefinition
kolumncolumn En kolumn eller ett uttryck som matchar en kolumn.A column or expression that resolves to a column.
numnum (Valfritt) Ett positivt tal till det yttre utvärderingssteget.(Optional) A positive number to the outer evaluation pass.

Nästa utvärderingsnivå visas med 1. Två nivåer visas med 2 och så vidare.The next evaluation level out is represented by 1; two levels out is represented by 2 and so on.

När det utelämnas är standardvärdet 1.When omitted default value is 1.

ReturvärdeReturn value

Det aktuella värdet för raden, från kolumn, vid tal i de yttre utvärderingsstegen.The current value of row, from column, at number of outer evaluation passes.

UndantagExceptions

FelbeskrivningDescription of errors

AnmärkningarRemarks

  • EARLIER lyckas om det finns en radkontext innan tabellgenomsökningen påbörjas.EARLIER succeeds if there is a row context prior to the beginning of the table scan. Annars returneras ett fel.Otherwise it returns an error.

  • Prestandan för EARLIER kan vara långsam eftersom det teoretiskt sett kan hända att du måste utföra ett antal åtgärder som ligger nära det totala antalet rader (i kolumnen) gånger samma antal (beroende på syntaxen för uttrycket).The performance of EARLIER might be slow because it theoretically, it might have to perform a number of operations that is close to the total number of rows (in the column) times the same number (depending on the syntax of the expression). Om du till exempel har 10 rader i kolumnen, kan ungefär 100 åtgärder krävas. Om du har 100 rader kan upp till 10 000 åtgärder behöva utföras.For example if you have 10 rows in the column, approximately a 100 operations could be required; if you have 100 rows then close to 10,000 operations might be performed.

  • Den här funktionen kan inte användas i DirectQuery-läge när den används i beräknade kolumner eller regler för säkerhet på radnivå (RLS).This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.

Anteckning

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.In practice, the VertiPaq in-memory analytics engine performs optimizations to reduce the actual number of calculations, but you should be cautious when creating formulas that involve recursion.

ExempelExample

För att illustrera användningen av EARLIER måste vi skapa ett scenario som beräknar ett rangvärde och sedan använder detta rangvärde i andra beräkningar.To illustrate the use of EARLIER, it is necessary to build a scenario that calculates a rank value and then uses that rank value in other calculations.

Följande exempel baseras på den här enkla tabellen, ProductSubcategory, som visar den totala försäljningen för varje ProductSubcategory.The following example is based on this simple table, ProductSubcategory, which shows the total sales for each ProductSubcategory.

Den sista tabellen, inklusive rangordningskolumnen, visas här.The final table, including the ranking column is shown here.

ProductSubcategoryKeyProductSubcategoryKey EnglishProductSubcategoryNameEnglishProductSubcategoryName TotalSubcategorySalesTotalSubcategorySales SubcategoryRankingSubcategoryRanking
1818 CykelbyxorBib-Shorts 156 167,88 USD$156,167.88 1818
2626 CykelställBike Racks 220 720,70 USD$220,720.70 1414
2727 CykelstödBike Stands 35 628,69 USD$35,628.69 3030
2828 Flaskor och burarBottles and Cages 59 342,43 USD$59,342.43 2424
55 BottenfästenBottom Brackets 48 643,47 USD$48,643.47 2727
66 BromsarBrakes 62 113,16 USD$62,113.16 2323
1919 KepsarCaps 47 934,54 USD$47,934.54 2828
77 KedjorChains 8 847,08 USD$8,847.08 3535
2929 RengöringCleaners 16 882,62 USD$16,882.62 3232
88 VevpartierCranksets 191 522,09 USD$191,522.09 1515
99 VäxlarDerailleurs 64 965,33 USD$64,965.33 2222
3030 StänkskärmarFenders 41 974,10 USD$41,974.10 2929
1010 GafflarForks 74 727,66 USD$74,727.66 2121
2020 HandskarGloves 228 353,58 USD$228,353.58 1212
44 StyrenHandlebars 163 257,06 USD$163,257.06 1717
1111 HörlurarHeadsets 57 659,99 USD$57,659.99 2525
3131 HjälmarHelmets 451 192,31 USD$451,192.31 99
3232 VätskepaketHydration Packs 96 893,78 USD$96,893.78 2020
2121 TröjorJerseys 699 429,78 USD$699,429.78 77
3333 LamporLights 3636
3434 LåsLocks 15 059,47 USD$15,059.47 3333
11 MountainbikesMountain Bikes 34 305 864,29 USD$34,305,864.29 22
1212 MTB-ramarMountain Frames 4 511 170,68 USD$4,511,170.68 44
3535 CykelväskorPanniers 3636
1313 PedalerPedals 140 422,20 USD$140,422.20 1919
3636 PumparPumps 12 695,18 USD$12,695.18 3434
22 Road BikesRoad Bikes 40 551 696,34 USD$40,551,696.34 11
1414 Ramar till landsvägscyklarRoad Frames 3 636 398,71 USD$3,636,398.71 55
1515 SadlarSaddles 52 526,47 USD$52,526.47 2626
2222 ShortsShorts 385 707,80 USD$385,707.80 1010
2323 StrumporSocks 28 337,85 USD$28,337.85 3131
2424 TightsTights 189 179,37 USD$189,179.37 1616
3737 Däck och slangarTires and Tubes 224 832,81 USD$224,832.81 1313
33 TouringcyklarTouring Bikes 13 334 864,18 USD$13,334,864.18 33
1616 TouringcyklarTouring Frames 1 545 344,02 USD$1,545,344.02 66
2525 LinnenVests 240 990,04 USD$240,990.04 1111
1717 HjulWheels 648 240,04 USD$648,240.04 88

Skapa ett rangvärdeCreating a Rank Value

Ett sätt att hämta ett rangvärde för ett angivet värde i en rad på, ä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.One way to obtain a rank value for a given value in a row is to count the number of rows, in the same table, that have a value larger (or smaller) than the one that is being compared. Den här metoden returnerar ett tomt värde eller ett nollvärde för det högsta värdet i tabellen, medan likadana värden har samma rangvärde och nästa värde (efter de värden som är likadana) får ett rangvärde som inte ligger i följd.This technique returns a blank or zero value for the highest value in the table, whereas equal values will have the same rank value and next value (after the equal values) will have a non consecutive rank value. Se exemplet nedan.See the sample below.

En ny beräknad kolumn, SubCategorySalesRanking, skapas med hjälp av nedanstående formel.A new calculated column, SubCategorySalesRanking, is created by using the following formula.

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

Följande steg beskriver beräkningsmetoden mer detaljerat.The following steps describe the method of calculation in more detail.

  1. Funktionen EARLIER hämtar värdet för TotalSubcategorySales för den aktuella raden i tabellen.The EARLIER function gets the value of TotalSubcategorySales for the current row in the table. Eftersom processen startas i detta fall, är det den första raden i tabellenIn this case, because the process is starting, it is the first row in the table

  2. EARLIER([TotalSubcategorySales]) utvärderas till 156 167,88 USD, den aktuella raden i den yttre loopen.EARLIER([TotalSubcategorySales]) evaluates to $156,167.88, the current row in the outer loop.

  3. FILTER-funktionen returnerar nu en tabell där alla rader har ett värde i TotalSubcategorySales som är större än 156 167,88 USD (vilket är det aktuella värdet för EARLIER).The FILTER function now returns a table where all rows have a value of TotalSubcategorySales larger than $156,167.88 (which is the current value for EARLIER).

  4. COUNTROWS-funktionen räknar raderna i den filtrerade tabellen och tilldelar det värdet till den nya beräknade kolumnen på den aktuella raden plus 1.The COUNTROWS function counts the rows of the filtered table and assigns that value to the new calculated column in the current row plus 1. Du måste lägga till 1 för att förhindra att det överst rankade värdet blir tomt.Adding 1 is needed to prevent the top ranked value from become a Blank.

  5. Formeln för den beräknade kolumnen flyttas till nästa rad och steg 1 till 4 upprepas.The calculated column formula moves to the next row and repeats steps 1 to 4. Dessa steg upprepas tills tabellens slut nås.These steps are repeated until the end of the table is reached.

EARLIER-funktionen får alltid värdet för kolumnen före den aktuella tabellåtgärden.The EARLIER function will always get the value of the column prior to the current table operation. Om du behöver hämta ett värde från loppen innan detta, anger du det andra argumentet som 2.If you need to get a value from the loop before that, set the second argument to 2.

Se ävenSee also

Funktionen EARLIESTEARLIEST function
Filtrera funktionerFilter functions