EARLIER
gælder for:beregnet kolonne
beregnet tabel
beregning af måling
visualisering
Returnerer den aktuelle værdi for den angivne kolonne i et ydre evalueringspas for den nævnte kolonne.
EARLIER er nyttigt til indlejrede beregninger, hvor du vil bruge en bestemt værdi som input og oprette 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 værdien af inputtet og 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 eller et udtryk, der oversættes til en kolonne. |
num |
(Valgfrit) Et positivt tal til det ydre evalueringspas. Det næste evalueringsniveau er repræsenteret af 1. to niveauer ud repræsenteres af 2 osv. Når standardværdien udelades, er den 1. |
Returværdi
Den aktuelle værdi af række fra column
ved number
af ydre evalueringstrin.
Undtagelser
Beskrivelse af fejl
Bemærkninger
EARLIER
lykkes, hvis der er en rækkekontekst før starten af tabelscanningen. Ellers returneres der en fejl.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). Hvis du f.eks. har 10 rækker i kolonnen, kan der være behov for ca. 100 handlinger. Hvis du har 100 rækker, kan der udføres tæt på 10.000 handlinger.Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller 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 rangeringsværdi og derefter bruger rangeringsværdien 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 og 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 og 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 rangeringsværdi
En måde at opnå en rangeringsværdi for en given værdi i en række på er ved at tælle antallet af rækker i den samme tabel, der har en værdi, der er større (eller mindre) end den, der sammenlignes. Denne teknik returnerer en tom værdi eller en nulværdi for den højeste værdi i tabellen, mens lige værdier har samme rangordningsværdi, og den næste værdi (efter de lige værdier) har en ikke-efterfølgende rangordningsværdi. Se eksemplet 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 værdien af TotalSubcategorySales- for den aktuelle række i tabellen. Da processen i dette tilfælde starter, er det den første række i tabellenEARLIER([TotalSubcategorySales])
evalueres til $156.167,88, den aktuelle række i den ydre løkke.Funktionen
FILTER
returnerer nu en tabel, hvor alle rækker har en værdi på TotalSubcategorySales større end $156.167,88 (hvilket er den aktuelle værdi forEARLIER
).Funktionen
COUNTROWS
tæller rækkerne i den filtrerede tabel og tildeler denne værdi 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 værdi bliver tom.Formlen for den beregnede kolonne flyttes til den næste række og gentager trin 1 til 4. Disse trin gentages, indtil slutningen af tabellen er nået.
Funktionen EARLIER
henter altid værdien af kolonnen før den aktuelle tabelhandling. Hvis du har brug for at hente en værdi fra løkken før det, skal du angive det andet argument til 2.