EARLIER
gælder for:beregnet kolonneberegnet tabelMeasurevisualiseringsberegning
Returnerer den aktuelle value for den angivne kolonne i et ydre evalueringsgennemløb for den nævnte kolonne.
EARLIER er nyttigt til indlejrede beregninger, hvor du vil bruge en bestemt value som input and producere beregninger baseret på dette input. I Microsoft Excel kan du kun foretage sådanne beregninger inden for konteksten af den aktuelle række. I DAX kan du dog gemme value af inputtet and derefter foretage beregninger ved hjælp af data fra hele tabellen.
EARLIER bruges mest i forbindelse med beregnede kolonner.
Syntaks
EARLIER(<column>, <number>)
Parametre
Udtryk | Definition |
---|---|
column |
En kolonne or udtryk, der omsættes til en kolonne. |
num |
(Valgfrit) Et positivt tal til det ydre evalueringspas. Det next evalueringsniveau er repræsenteret af 1. to niveauer ud repræsenteres af 2 and osv. Når det udelades, er standard value 1. |
Returner value
Den aktuelle value af række fra column
ved number
af ydre evalueringstrin.
Undtagelser
Beskrivelse af fejl
Bemærkninger
EARLIER
lykkes, if der er en rækkekontekst før starten af tabelscanningen. Ellers returneres en error.Ydeevnen for
EARLIER
kan være langsom, fordi den teoretisk set muligvis skal udføre en række handlinger, der er tæt på det samlede antal rækker (i kolonnen) gange det samme tal (afhængigt af udtrykkets syntaks). if du f.eks. har 10 rækker i kolonnen, kan der være behov for ca. 100 handlinger. if du har 100 rækker, kan der udføres tæt på 10.000 handlinger.Denne funktion understøttes not til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner or RLS-regler (row-level security).
Seddel
I praksis udfører VertiPaq-analyseprogrammet i hukommelsen optimeringer for at reducere det faktiske antal beregninger, men du skal være forsigtig, når du opretter formler, der involverer rekursion.
Eksempel
For at illustrere brugen af EARLIERer det nødvendigt at oprette et scenarie, der beregner en rankvalueand bruger derefter rankvalue i andre beregninger.
Følgende eksempel er baseret på denne enkle tabel, ProductSubcategory
, som viser det samlede salg for hver ProductSubcategory.
Den endelige tabel, herunder rangeringskolonnen, vises her.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | Underkategori -ranking |
---|---|---|---|
18 | Bib-Shorts | 156.167,88 USD | 18 |
26 | Cykelstativer | 220.720,70 USD | 14 |
27 | Cykelstativer | 35.628,69 USD | 30 |
28 | Flasker and bure | 59.342,43 USD | 24 |
5 | Nederste kantede parenteser | 48.643,47 USD | 27 |
6 | Bremser | 62.113,16 USD | 23 |
19 | Caps | 47.934,54 USD | 28 |
7 | Kæder | 8.847,08 USD | 35 |
29 | Rengøringsmidler | 16.882,62 USD | 32 |
8 | Krumtapper | 191.522,09 USD | 15 |
9 | Derailleurs | 64.965,33 USD | 22 |
30 | Fendere | 41.974,10 USD | 29 |
10 | Gafler | 74.727,66 USD | 21 |
20 | Handsker | 228.353,58 USD | 12 |
4 | Styret | 163.257,06 USD | 17 |
11 | Headsets | 57.659,99 USD | 25 |
31 | Hjelme | 451.192,31 USD | 9 |
32 | Hydreringspakker | 96.893,78 USD | 20 |
21 | Trøjer | 699.429,78 USD | 7 |
33 | Lys | 36 | |
34 | Låse | 15.059,47 USD | 33 |
1 | Mountainbikes | 34.305.864,29 USD | 2 |
12 | Bjergrammer | 4.511.170,68 USD | 4 |
35 | Cykeltasker | 36 | |
13 | Pedaler | 140.422,20 USD | 19 |
36 | Pumper | 12.695,18 USD | 34 |
2 | Landevejscykler | 40.551.696,34 USD | 1 |
14 | Vejrammer | 3.636.398,71 USD | 5 |
15 | Sadler | 52.526,47 USD | 26 |
22 | Shorts | 385.707,80 USD | 10 |
23 | Sokker | 28.337,85 USD | 31 |
24 | Strømpebukser | 189.179,37 USD | 16 |
37 | Dæk and rør | 224.832,81 USD | 13 |
3 | Touring Bikes | 13.334.864,18 USD | 3 |
16 | Præsentationsrammer | 1.545.344,02 USD | 6 |
25 | Veste | 240.990,04 USD | 11 |
17 | Hjul | 648.240,04 USD | 8 |
Oprettelse af en RankValue
En måde at hente en rankvalue for en given value i en række på er ved at count antallet af rækker i den samme tabel, der har en value større (or mindre) end den, der sammenlignes. Denne teknik returnerer et blankor nul value for den højeste value i tabellen, mens lige values har samme rankvalueandnextvalue (efter den lige values) vil have en ikke-efterfølgende rankvalue. Se sample nedenfor.
En ny beregnet kolonne, SubCategorySalesRanking, oprettes ved hjælp af følgende formel.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
I følgende trin beskrives beregningsmetoden mere detaljeret.
Funktionen
EARLIER
henter value af TotalSubcategorySales- for den aktuelle række i tabellen. Da processen i dette tilfælde starter, er det den first række i tabellenEARLIER([TotalSubcategorySales])
evalueres til $156.167,88, den aktuelle række i den ydre løkke.Funktionen
FILTER
returnerer now en tabel, hvor all rækker har en value på TotalSubcategorySales, der er større end $156.167,88 (hvilket er den aktuelle value forEARLIER
).Funktionen
COUNTROWS
tæller rækkerne i den filtrerede tabel and tildeler, som value til den nye beregnede kolonne i den aktuelle række plus 1. Tilføjelse af 1 er nødvendig for at forhindre, at den højest rangerede value bliver en Blank.Formlen for den beregnede kolonne flyttes til den next række and gentager trin 1 til 4. Disse trin gentages, indtil slutningen af tabellen er nået.
Funktionen EARLIER
henter altid kolonnens value før den aktuelle tabelhandling.
If du skal hente en value fra løkken før det, skal du angive argumentet second til 2.