EARLIER
A következőkre vonatkozik:Számított oszlop
Számított tábla
Mérték
Vizualizációszámítási
A megadott oszlop aktuális értékét adja vissza az említett oszlop külső próbaidőszakában.
EARLIER olyan beágyazott számításokhoz hasznos, amelyekben egy bizonyos értéket szeretne bemenetként használni, és az adott bemenet alapján kíván számításokat végezni. A Microsoft Excelben ezeket a számításokat csak az aktuális sor kontextusában végezheti el; DAX azonban tárolhatja a bemenet értékét, majd számítást végezhet a teljes táblázat adataival.
EARLIER általában a számított oszlopok kontextusában használják.
Szintaxis
EARLIER(<column>, <number>)
Paraméterek
Kifejezés | Definíció |
---|---|
column |
Oszlop vagy kifejezés, amely egy oszlopra van feloldva. |
num |
(Nem kötelező) Pozitív szám a külső próbaidőszakra. A következő kiértékelési szintet 1 jelöli; két szint ki van jelölve 2 és így tovább. Ha nem adja meg az alapértelmezett értéket, az 1. |
Visszaadott érték
A sor aktuális értéke column
, a külső kiértékelési bérletek number
.
Kivételek
A hibák leírása
Megjegyzések
EARLIER
akkor sikeres, ha a táblavizsgálat kezdete előtt sorkörnyezet van. Ellenkező esetben hibát ad vissza.A
EARLIER
teljesítménye lassú lehet, mert elméletileg több olyan műveletet kell végrehajtania, amely közel áll a sorok teljes számához (az oszlopban) azonos számmal (a kifejezés szintaxisától függően). Ha például 10 sor van az oszlopban, körülbelül 100 műveletre lehet szükség; ha 100 sorból áll, akkor közel 10 000 műveletet hajthat végre.Ez a függvény nem támogatott DirectQuery módban, ha számított oszlopokban vagy sorszintű biztonsági (RLS) szabályokban használják.
Jegyzet
A gyakorlatban a VertiPaq memóriabeli elemzési motor optimalizálásokat végez a számítások tényleges számának csökkentése érdekében, de óvatosnak kell lennie a rekurziót tartalmazó képletek létrehozásakor.
Példa
A EARLIERhasználatának szemléltetéséhez olyan forgatókönyvet kell létrehozni, amely kiszámít egy rangsorértéket, majd ezt a rangértéket más számításokban használja.
Az alábbi példa erre az egyszerű táblára épül, ProductSubcategory
, amely az egyes ProductSubcategory-termékek teljes értékesítését mutatja.
Itt látható az utolsó táblázat, a rangsor oszlopot is beleértve.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Bib-Shorts | 156 167,88 USD | 18 |
26 | Kerékpártartók | 220 720,70 USD | 14 |
27 | Kerékpárállványok | 35 628,69 USD | 30 |
28 | Palackok és ketrecek | 59 342,43 USD | 24 |
5 | Alsó zárójelek | 48 643,47 USD | 27 |
6 | Fékek | 62 113,16 USD | 23 |
19 | Sapkák | 47 934,54 USD | 28 |
7 | Láncok | 8 847,08 USD | 35 |
29 | Tisztítószerek | 16 882,62 USD | 32 |
8 | Forgatott hajtókarok | 191 522,09 USD | 15 |
9 | Derailleurs | 64 965,33 USD | 22 |
30 | Sárvédők | 41 974,10 USD | 29 |
10 | Villa | 74 727,66 USD | 21 |
20 | Kesztyű | 228 353,58 USD | 12 |
4 | Kormány | 163 257,06 USD | 17 |
11 | Fejhallgatók | 57 659,99 USD | 25 |
31 | Sisakok | 451 192,31 USD | 9 |
32 | Hidratálási csomagok | 96 893,78 USD | 20 |
21 | Mezek | 699 429,78 USD | 7 |
33 | Fények | 36 | |
34 | Zárak | 15 059,47 USD | 33 |
1 | Mountain Bikes | 34 305 864,29 USD | 2 |
12 | Hegyi keretek | 4 511 170,68 USD | 4 |
35 | Panniers | 36 | |
13 | Pedálok | 140 422,20 USD | 19 |
36 | Szivattyúk | 12 695,18 USD | 34 |
2 | Közúti kerékpárok | 40 551 696,34 USD | 1 |
14 | Útkeretek | 3 636 398,71 USD | 5 |
15 | Nyergek | 52 526,47 USD | 26 |
22 | Rövidnadrág | 385 707,80 USD | 10 |
23 | Zokni | 28 337,85 USD | 31 |
24 | Harisnyanadrág | 189 179,37 USD | 16 |
37 | Gumik és csövek | 224 832,81 USD | 13 |
3 | Túrakerékpárok | 13 334 864,18 USD | 3 |
16 | Túrakeretek | 1 545 344,02 USD | 6 |
25 | Mellények | 240 990,04 USD | 11 |
17 | Kerekek | 648 240,04 USD | 8 |
Rangsorérték létrehozása
Egy sor adott értékének rangsorértékének egyik módja, ha megszámlálja azoknak a soroknak a számát ugyanabban a táblában, amelyek értéke nagyobb (vagy kisebb), mint az összehasonlítandó. Ez a technika egy üres vagy nulla értéket ad vissza a tábla legmagasabb értékéhez, míg az egyenlő értékek azonos rangértéket, a következő érték (az egyenlő értékek után) pedig nem egymást követő rangértéket kap. Tekintse meg az alábbi mintát.
Az alábbi képlettel létrejön egy új számított oszlop, SubCategorySalesRanking.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
Az alábbi lépések részletesebben ismertetik a számítási módszert.
A
EARLIER
függvény a tábla aktuális sorához tartozó TotalSubcategorySales értékét kapja meg. Ebben az esetben, mivel a folyamat elkezdődött, ez a tábla első soraEARLIER([TotalSubcategorySales])
kiértékelése 156 167,88 usd, a külső hurok aktuális sora.A
FILTER
függvény most egy táblát ad vissza, amelyben az összes sor értéke TotalSubcategorySales nagyobb, mint 156 167,88 USD (ami aEARLIER
aktuális értéke).A
COUNTROWS
függvény megszámolja a szűrt tábla sorait, és hozzárendeli ezt az értéket az aktuális sor új számított oszlopához plusz 1. Az 1 hozzáadására azért van szükség, hogy a legfelső rangsorolt érték ne váljon üressé.A számított oszlop képlete a következő sorba kerül, és megismétli az 1–4. lépést. Ezek a lépések mindaddig ismétlődnek, amíg el nem éri a táblázat végét.
A EARLIER
függvény mindig az aktuális táblaművelet előtt kapja meg az oszlop értékét. Ha az előtte lévő hurokból szeretne értéket lekérni, állítsa a második argumentumot 2 értékre.