EARLIER
platí pro:počítaný sloupecPočítaná tabulkaMeasure vizuálu
Vrátí aktuální value zadaného sloupce ve vnějším průchodu vyhodnocení uvedeného sloupce.
EARLIER je užitečná pro vnořené výpočty, ve kterých chcete jako vstupní value použít určitou and. V Microsoft Excelu můžete takové výpočty provádět pouze v kontextu aktuálního řádku; V DAX ale můžete uložit value vstupního and pak provést výpočet pomocí dat z celé tabulky.
EARLIER se většinou používá v kontextu počítaných sloupců.
Syntax
EARLIER(<column>, <number>)
Parametry
Semestr | Definice |
---|---|
column |
Sloupec or výraz, který se přeloží na sloupec. |
num |
(Volitelné) Kladné číslo pro vnější vyhodnocení. Úroveň vyhodnocení next je reprezentována hodnotou 1; dvě úrovně jsou reprezentovány 2 and tak dále. Pokud vynecháte výchozí value je 1. |
Vrácení value
Aktuální value řádku z column
v number
průchodů vnějšího vyhodnocení.
Výjimky
Popis chyb
Poznámky
EARLIER
úspěšně if před začátkem prohledávání tabulky existuje kontext řádku. V opačném případě vrátí error.Výkon
EARLIER
může být pomalý, protože teoreticky může být nutné provést řadu operací, které se blíží celkovému počtu řádků (ve sloupci) krát stejnému číslu (v závislosti na syntaxi výrazu). Například if máte ve sloupci 10 řádků, může se vyžadovat přibližně 100 operací; if máte 100 řádků a pak může být provedeno téměř 10 000 operací.Tato funkce je not podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích or pravidla zabezpečení na úrovni řádků (RLS).
Poznámka
V praxi analytický modul VertiPaq v paměti provádí optimalizace, aby snížil skutečný počet výpočtů, ale při vytváření vzorců, které zahrnují rekurzi, byste měli být opatrní.
Příklad
Pro ilustraci použití EARLIERje nutné vytvořit scénář, který vypočítá rankvalueand pak použije tento rankvalue v jiných výpočtech.
Následující příklad je založen na této jednoduché tabulce, ProductSubcategory
, která zobrazuje celkové prodeje pro každou ProductSubcategory.
Tady je zobrazená konečná tabulka včetně sloupce řazení.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | Řazení podkategorie |
---|---|---|---|
18 | Bib-Shorts | 156 167,88 Kč | 18 |
26 | Stojany na kola | 220 720,70 Kč | 14 |
27 | Kolové stojany | 35 628,69 Kč | 30 |
28 | Láhev and Klece | 59 342,43 Kč | 24 |
5 | Dolní závorky | 48 643,47 Kč | 27 |
6 | Brzdy | 62 113,16 Kč | 23 |
19 | Čepice | 47 934,54 Kč | 28 |
7 | Řetízky | 8 847,08 Kč | 35 |
29 | Uklízečky | 16 882,62 Kč | 32 |
8 | Klikové sady | 191 522,09 Kč | 15 |
9 | Derailleurs | 64 965,33 Kč | 22 |
30 | Blatníky | 41 974,10 Kč | 29 |
10 | Vidličky | 74 727,66 Kč | 21 |
20 | Rukavice | 228 353,58 Kč | 12 |
4 | Řidítka | 163 257,06 Kč | 17 |
11 | Sluchátka | 57 659,99 Kč | 25 |
31 | Helmy | 451 192,31 Kč | 9 |
32 | Hydrační balíčky | 96 893,78 Kč | 20 |
21 | Pletené vesty | 699 429,78 Kč | 7 |
33 | Světla | 36 | |
34 | Zámky | 15 059,47 Kč | 33 |
1 | Horská kola | 34 305 864,29 Kč | 2 |
12 | Horské rámy | 4 511 170,68 Kč | 4 |
35 | Košíky | 36 | |
13 | Pedály | 140 422,20 Kč | 19 |
36 | Pumpy | 12 695,18 Kč | 34 |
2 | Silniční kola | 40 551 696,34 Kč | 1 |
14 | Silniční rámy | 3 636 398,71 Kč | 5 |
15 | Sedla | 52 526,47 Kč | 26 |
22 | Šortky | 385 707,80 Kč | 10 |
23 | Ponožky | 28 337,85 Kč | 31 |
24 | Punčocháče | 189 179,37 Kč | 16 |
37 | Pneumatiky and trubek | 224 832,81 Kč | 13 |
3 | Touring Bikes | 13 334 864,18 Kč | 3 |
16 | Prohlídkové snímky | 1 545 344,02 Kč | 6 |
25 | Vesty | 240 990,04 Kč | 11 |
17 | Kola | 648 240,04 Kč | 8 |
Vytvoření RankValue
Jedním ze způsobů, jak získat rankvalue pro danou value na řádku, je count počtu řádků ve stejné tabulce, které mají value větší (or menší) než ten, který se porovnává. Tato technika vrátí blankor nula value pro nejvyšší value v tabulce, zatímco stejná values bude mít stejnou rankvalueandnextvalue (za stejnou values) bude mít ne sobě jdoucí rankvalue. Podívejte se na sample níže.
Nový počítaný sloupec, SubCategorySalesRanking, se vytvoří pomocí následujícího vzorce.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
Následující kroky popisují metodu výpočtu podrobněji.
Funkce
EARLIER
získá valuetotalsubcategorySales pro aktuální řádek v tabulce. V tomto případě, protože proces začíná, je to first řádek v tabulce.EARLIER([TotalSubcategorySales])
vyhodnotí hodnotu 156 167,88 KČ, aktuální řádek ve vnější smyčce.Funkce
FILTER
now vrátí tabulku, kde all řádky mají valueTotalSubcategorySales větší než 156 167,88 USD (což je aktuální value proEARLIER
).Funkce
COUNTROWS
spočítá řádky filtrované tabulky and přiřadí, které value novému počítanému sloupci v aktuálním řádku plus 1. Přidání hodnoty 1 je potřeba, aby se value s nejvyšším pořadím stal Blank.Vzorec počítaného sloupce se přesune na řádek nextand zopakuje kroky 1 až 4. Tyto kroky se opakují, dokud nedosáhnete konce tabulky.
Funkce EARLIER
vždy získá value sloupce před aktuální operací tabulky.
If potřebujete získat value ze smyčky předtím, nastavte argument second na hodnotu 2.