TIDLIGERE

Gjelder beregnet beregning av beregnet tabellfor beregnet kolonne

Returnerer gjeldende verdi for den angitte kolonnen i en ytre evalueringspass av den omtalte kolonnen.

TIDLIGERE er nyttig for nestede beregninger der du vil bruke en bestemt verdi som inndata og produsere beregninger basert på disse inndataene. I Microsoft Excel kan du gjøre slike beregninger bare innenfor konteksten til gjeldende rad. I DAX kan du imidlertid lagre verdien for inndataene og deretter foreta beregning ved hjelp av data fra hele tabellen.

EARLIER brukes for det meste i konteksten til beregnede kolonner.

Syntaks

EARLIER(<column>, <number>)  

Parametere

Term Definisjon
kolonne En kolonne eller et uttrykk som løses til en kolonne.
Num (Valgfritt) Et positivt tall til det ytre evalueringstrinnet.

Det neste evalueringsnivået ut representeres av 1. to nivåer ut representeres av 2 og så videre.

Når utelatt standardverdi er 1.

Returverdi

Gjeldende verdi for rad, fra kolonne, ved antall ytre evalueringstrinn.

Unntak

Beskrivelse av feil

Merknader

  • EARLIER lykkes hvis det er en radkontekst før begynnelsen av tabellskanningen. Ellers returneres en feil.

  • Ytelsen til EARLIER kan være treg fordi det teoretisk sett må utføre et antall operasjoner som er nær det totale antallet rader (i kolonnen) ganger det samme tallet (avhengig av syntaksen for uttrykket). Hvis du for eksempel har 10 rader i kolonnen, kan det være nødvendig med omtrent 100 operasjoner. Hvis du har 100 rader, kan det hende at nær 10 000 operasjoner utføres.

  • Denne funksjonen støttes ikke for bruk i DirectQuery-modus når den brukes i beregnede kolonner eller regler for sikkerhet på radnivå (RLS).

Merk

I praksis utfører Analysemotoren VertiPaq i minnet optimaliseringer for å redusere det faktiske antallet beregninger, men du bør være forsiktig når du oppretter formler som involverer rekursjon.

Eksempel

Hvis du vil illustrere bruken av EARLIER, er det nødvendig å bygge et scenario som beregner en rangeringsverdi og deretter bruker denne rangeringsverdien i andre beregninger.

Følgende eksempel er basert på denne enkle tabellen, ProductSubcategory, som viser det totale salget for hver ProductSubcategory.

Den endelige tabellen, inkludert rangeringskolonnen, vises her.

ProductSubcategoryKey EnglishProductSubcategoryName TotalSubcategorySales UnderkategoriRanking
18 Bib-Shorts KR 156 167,88 18
26 Sykkelstativer KR 220 720,70 14
27 Sykkelstativer kr 35 628,69 30
28 Flasker og bur kr 59 342,43 24
5 Bunnbrakett kr 48 643,47 27
6 Bremser KR 62 113,16 23
19 Caps kr 47 934,54 28
7 Kjeder KR 8 847,08 35
29 Rengjøringsmidler KR 16 882,62 32
8 Kranksett kr 191 522,09 sept.
9 Kjedegir KR 64 965,33 22
30 Fendere KR 41 974,10 29
10 Gafler KR 74 727,66 21
20 Hansker kr 228 353,58 12
4 Styre KR 163 257,06 17
11 Hodetelefoner kr 57 659,99 25
31 Hjelmer KR 451 192,31 9
32 Hydreringspakker kr 96 893,78 20
21 Gensere kr 699 429,78 7
33 Lys 36
34 Låser KR 15 059,47 33
1 Mountain Bikes KR 34 305 864,29 2
12 Rammer til terrengsykler KR 4 511 170,68 4
35 Sykkelveske 36
13 Pedaler KR 140 422,20 19
36 Pumper KR 12 695,18 34
2 Veisykler KR 40 551 696,34 1
14 Veirammer KR 3 636 398,71 5
sept. Saler KR 52 526,47 26
22 Shorts KR 3 85 707,80 10
23 Sokker KR 28 337,85 31
24 Tights kr 1 89 179,37 16
37 Dekk og rør KR 224 832,81 13
3 Touring-sykler KR 13 334 864,18 3
16 Rammer til touring-sykler kr 1 545 344,02 6
25 Vester kr 240 990,04 11
17 Hjul KR 6 48 240,04 8

Opprette en rangeringsverdi

Én måte å få en rangeringsverdi for en gitt verdi i en rad på, er å telle antall rader, i samme tabell, som har en verdi som er større (eller mindre) enn den som sammenlignes. Denne teknikken returnerer en tom verdi eller nullverdi for den høyeste verdien i tabellen, mens like verdier har samme rangeringsverdi, og neste verdi (etter de like verdiene) har en ikke-etterfølgende rangeringsverdi. Se eksemplet nedenfor.

En ny beregnet kolonne, SubCategorySalesRanking, opprettes ved hjelp av følgende formel.

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

Følgende trinn beskriver beregningsmetoden mer detaljert.

  1. EARLIER-funksjonen henter verdien for TotalSubcategorySales for gjeldende rad i tabellen. I dette tilfellet, fordi prosessen starter, er det den første raden i tabellen

  2. EARLIER([TotalSubcategorySales]) evalueres til KR 156 167,88, gjeldende rad i den ytre løkken.

  3. FILTER-funksjonen returnerer nå en tabell der alle rader har en verdi for TotalSubcategorySales som er større enn KR 156 167,88 (som er gjeldende verdi for TIDLIGERE).

  4. COUNTROWS-funksjonen teller radene i den filtrerte tabellen og tilordner denne verdien til den nye beregnede kolonnen i gjeldende rad pluss 1. Det er nødvendig å legge til 1 for å hindre at den høyest rangerte verdien blir tom.

  5. Formelen for beregnet kolonne flyttes til neste rad og gjentar trinn 1 til 4. Disse trinnene gjentas til slutten av tabellen er nådd.

TIDLIGERE-funksjonen vil alltid få verdien for kolonnen før gjeldende tabelloperasjon. Hvis du trenger å få en verdi fra løkken før det, angir du det andre argumentet til 2.

EARLIEST (funksjon)
Filterfunksjoner