EARLIER
gjelder:beregnet kolonneberegnet tabellMeasurevisualobjektberegning
Returnerer gjeldende value for den angitte kolonnen i en ytre evalueringspass av den omtalte kolonnen.
EARLIER er nyttig for nestede beregninger der du vil bruke en bestemt value som inndata and produsere beregninger basert på disse inndataene. I Microsoft Excel kan du gjøre slike beregninger bare innenfor konteksten til gjeldende rad. Men i DAX kan du lagre value av inndata and 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
Vilkår | Definisjon |
---|---|
column |
En kolonne or uttrykk som løses til en kolonne. |
num |
(Valgfritt) Et positivt tall til det ytre evalueringstrinnet. Evalueringsnivået next representeres av 1. to nivåer ut representeres av 2 and så videre. Når du utelater standard value er 1. |
Returner value
Gjeldende value rad, fra column
, ved number
av ytre evalueringstrinn.
Unntak
Beskrivelse av feil
Merknader
EARLIER
lykkes if det er en radkontekst før begynnelsen av tabellskanningen. Ellers returneres en error.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). For eksempel if du har 10 rader i kolonnen, kan det være nødvendig med omtrent 100 operasjoner. if du har 100 rader, kan det hende at nær 10 000 operasjoner utføres.Denne funksjonen støttes not for bruk i DirectQuery-modus når den brukes i beregnede kolonner or regler for sikkerhet på radnivå (RLS).
Notat
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
For å illustrere bruken av EARLIERer det nødvendig å bygge et scenario som beregner en rankvalueand og deretter bruker denne rankvalue 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 and bur | kr 59 342,43 | 24 |
5 | Nederste hakeparenteser | 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 | Veivsett | kr 191 522,09 | 15 |
9 | Derailleurs | 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 | Styret | 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 | Jerseys | kr 699 429,78 | 7 |
33 | Lys | 36 | |
34 | Låser | KR 15 059,47 | 33 |
1 | Terrengsykler | KR 34 305 864,29 | 2 |
12 | Fjellrammer | KR 4 511 170,68 | 4 |
35 | Sykkelveske | 36 | |
13 | Pedaler | KR 140 422,20 | 19 |
36 | Pumpene | KR 12 695,18 | 34 |
2 | Landeveissykler | KR 40 551 696,34 | 1 |
14 | Veirammer | KR 3 636 398,71 | 5 |
15 | Saler | KR 52 526,47 | 26 |
22 | Shorts | KR 3 85 707,80 | 10 |
23 | Sokker | KR 28 337,85 | 31 |
24 | Strømpebukse | kr 1 89 179,37 | 16 |
37 | Dekk and rør | KR 224 832,81 | 13 |
3 | Tursykler | KR 13 334 864,18 | 3 |
16 | Turrammer | kr 1 545 344,02 | 6 |
25 | Vester | kr 240 990,04 | 11 |
17 | Hjul | KR 6 48 240,04 | 8 |
Opprette en RankValue
Én måte å få en rankvalue for en gitt value i en rad på, er å count antall rader, i samme tabell, som har en value større (or mindre) enn den som sammenlignes. Denne teknikken returnerer en blankor null value for de høyeste value i tabellen, mens lik values har samme rankvalueandnextvalue (etter den samme values) har en ikke-sammenhengende rankvalue. Se sample 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.
Funksjonen
EARLIER
får value av TotalSubcategorySales for gjeldende rad i tabellen. I dette tilfellet, fordi prosessen starter, er det den first raden i tabellenEARLIER([TotalSubcategorySales])
evalueres til KR 156 167,88, gjeldende rad i den ytre løkken.Funksjonen
FILTER
returnerer now en tabell der all rader har en value av TotalSubcategorySales større enn KR 156 167,88 (som er gjeldende value forEARLIER
).Funksjonen
COUNTROWS
teller radene i den filtrerte tabellen and tilordner den value til den nye beregnede kolonnen i gjeldende rad pluss 1. Det er nødvendig å legge til 1 for å hindre at den høyest rangerte value blir en Blank.Formelen for beregnet kolonne flyttes til next rad and gjentar trinn 1 til 4. Disse trinnene gjentas til slutten av tabellen er nådd.
Funksjonen EARLIER
får alltid value for kolonnen før gjeldende tabelloperasjon.
If du må få en value fra løkken før det, angir du argumentet second til 2.