EARLIER
platí pro:Počítaný sloupec
Počítaná tabulka
míra
vizuální
Vrátí aktuální hodnotu zadaného sloupce ve vnějším zkušebním průchodu zmíněného sloupce.
EARLIER je užitečné pro vnořené výpočty, ve kterých chcete jako vstup použít určitou hodnotu a provádět výpočty na základě daného vstupu. V Microsoft Excelu můžete takové výpočty provádět pouze v kontextu aktuálního řádku; V DAX však můžete uložit hodnotu vstupu a 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 nebo výraz, který se překládá na sloupec. |
num |
(Volitelné) Kladné číslo pro vnější vyhodnocení. Další úroveň hodnocení je reprezentována hodnotou 1; dvě úrovně jsou reprezentovány 2 a tak dále. Pokud vynecháte výchozí hodnotu 1. |
Návratová hodnota
Aktuální hodnota řádku z column
v number
průchodů vnějšího vyhodnocení.
Výjimky
Popis chyb
Poznámky
EARLIER
úspěšné, pokud před začátkem prohledávání tabulky existuje kontext řádku. V opačném případě vrátí chybu.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). Pokud máte například ve sloupci 10 řádků, může být vyžadováno přibližně 100 operací; Pokud máte 100 řádků, může se provést téměř 10 000 operací.Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech 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á hodnotu pořadí a pak použije tuto hodnotu pořadí 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 a 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 a trubky | 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í hodnoty pořadí
Jedním ze způsobů, jak získat hodnotu pořadí pro danou hodnotu v řádku, je spočítat počet řádků ve stejné tabulce, které mají hodnotu větší (nebo menší) než ta, která se porovnává. Tato technika vrátí prázdnou nebo nulovou hodnotu pro nejvyšší hodnotu v tabulce, zatímco stejné hodnoty budou mít stejnou hodnotu pořadí a další hodnota (za stejnými hodnotami) bude mít po sobě jdoucí hodnotu pořadí. Podívejte se na následující ukázku.
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á hodnotu TotalSubcategorySales pro aktuální řádek v tabulce. V tomto případě, protože proces začíná, je to první řádek v tabulce.EARLIER([TotalSubcategorySales])
vyhodnotí hodnotu 156 167,88 KČ, aktuální řádek ve vnější smyčce.Funkce
FILTER
nyní vrátí tabulku, ve které mají všechny řádky hodnotu TotalSubcategorySales větší než 156 167,88 USD (což je aktuální hodnota proEARLIER
).Funkce
COUNTROWS
spočítá řádky filtrované tabulky a přiřadí ji novému počítanému sloupci v aktuálním řádku plus 1. Pokud chcete zabránit tomu, aby se nejvyšší seřazená hodnota stala prázdnou, je potřeba přidat 1.Vzorec počítaného sloupce se přesune na další řádek a zopakuje kroky 1 až 4. Tyto kroky se opakují, dokud nedosáhnete konce tabulky.
Funkce EARLIER
vždy získá hodnotu sloupce před aktuální operací tabulky. Pokud potřebujete získat hodnotu ze smyčky, nastavte druhý argument na hodnotu 2.