Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Počítaný sloupec
Počítaná tabulka
Měřit
Vizuální výpočet
Vrátí více řádků, které jsou umístěny v daném intervalu.
Syntaxe
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametry
| Pojem | definice |
|---|---|
from |
Určuje, kde se okno spouští. Může to být libovolný výraz DAX, který vrací skalární hodnotu.
Chování závisí na parametru from_type: – pokud je from_type REL, počet řádků, které se mají vrátit (záporná hodnota) nebo dopředu (kladná hodnota) z aktuálního řádku získat první řádek v okně.
- Pokud from_type je ABSa from je pozitivní, je to pozice začátku okna od začátku oddílu. Indexování je 1 a 0 se interpretuje jako 1. Například 0 a 1 znamená, že okno začíná od začátku oddílu. Pokud from je záporné, je to pozice začátku okna od konce oddílu. -1 znamená poslední řádek v oddílu. |
from_type |
Upraví chování parametru from. Možné hodnoty jsou ABS (absolutní) a REL (relativní). Výchozí hodnota je REL. |
to |
Stejné jako from, ale označuje konec okna. Poslední řádek je součástí okna. |
to_type |
Stejné jako from_type, ale upravuje chování to. |
relation |
(Volitelné) Výraz tabulky, ze kterého se vrátí výstupní řádky. Pokud se tento parametr používá ve vizuálních výpočtech, přijímá v obrazci vizuálu osu.
Pokud je zadán, musí všechny sloupce v partitionBy pocházet z ní nebo související tabulka.
Pokud tento parametr vynecháte: – Musíte zadat orderBy explicitně.– Všechny orderBy výrazy partitionBy musí být plně kvalifikované názvy sloupců a musí pocházet z jedné tabulky.
– výchozí hodnota je ALLSELECTED() všech sloupců v orderBy a partitionBy. |
orderBy |
(Volitelné) Klauzule ORDERBY() obsahující výrazy definující způsob řazení jednotlivých oddílů.
Pokud tento parametr vynecháte: – Musíte zadat relation explicitně.
- Výchozí nastavení řazení podle každého sloupce relation , který ještě není zadaný v partitionBy. |
blanks |
(Volitelné) Výčet, který definuje, jak zpracovat prázdné hodnoty při řazení relation nebo axis.
Podporované hodnoty jsou:
Při zadání parametru blanks i prázdných hodnot ve ORDERBYfunkci () u jednotlivých výrazů má u jednotlivých výrazů blanks orderBy prioritu pro příslušný výraz orderBy. Výrazy OrderBy bez blanks zadání respektují blanks parametr nadřazené funkce. |
partitionBy |
(Volitelné) Klauzule relation se považuje za jeden oddíl. |
matchBy |
(Volitelné) Klauzule (MATCHBY) obsahující sloupce, které definují, jak se shodují s daty a identifikují aktuální řádek. |
reset |
(Volitelné) K dispozici pouze ve vizuálních výpočtech. Určuje, jestli se výpočet resetuje a na jaké úrovni hierarchie sloupců obrazce vizuálu. Akceptované hodnoty jsou: odkaz na pole na sloupec v aktuálním obrazci vizuálu, NONE (výchozí), LOWESTPARENT, HIGHESTPARENTnebo celé číslo. Chování závisí na celočíselném znaménku: – Pokud je nula nebo vynechána, výpočet se neobnoví. Ekvivalent NONE.
– pokud je kladné, celé číslo identifikuje sloupec začínající od nejvyššího, nezávisle na agregačním intervalu. HIGHESTPARENT odpovídá 1.
– pokud je záporné, celé číslo identifikuje sloupec počínaje nejnižší hodnotou vzhledem k aktuálnímu agregačnímu intervalu. LOWESTPARENT je ekvivalentní -1. |
Návratová hodnota
Všechny řádky z okna.
Poznámky
Kromě sloupců přidaných funkcemi DAX tabulky musí mít každý sloupec ( relation pokud matchBy není k dispozici) nebo každý sloupec v matchBy a partitionBy (kdy matchBy je k dispozici) odpovídající vnější hodnotu, aby bylo možné definovat aktuální řádek, na kterém se má pracovat. Pokud from_type a to_type oba mají hodnotu ABS, platí pouze pro partitionBy sloupce:
- Pokud existuje přesně jeden odpovídající vnější sloupec, použije se jeho hodnota.
- Pokud neexistuje odpovídající vnější sloupec:
- WINDOW nejprve určuje všechny sloupce, které nemají odpovídající vnější sloupec.
- Pro každou kombinaci existujících hodnot pro tyto sloupce v WINDOWnadřazeném kontextu se WINDOW vyhodnotí a vrátí se odpovídající řádky.
- WINDOWKonečný výstup je sjednocením těchto řádků.
- Pokud existuje více než jeden odpovídající vnější sloupec, vrátí se chyba.
Pokud byly všechny sloupce relationpřidány funkcemi tabulky DAX, vrátí se chyba.
Pokud matchBy je tento řádek k dispozici, WINDOW pokusí se ho identifikovat pomocí matchBypartitionBy sloupců.
Pokud matchBy nejsou k dispozici a sloupce zadané v rámci orderBy a partitionBy nemohou jednoznačně identifikovat každý řádek v relation:
- WINDOW se pokusí najít nejmenší počet dalších sloupců potřebných k jednoznačné identifikaci každého řádku.
- Pokud jsou tyto sloupce nalezeny, WINDOW automaticky připojí tyto nové sloupce do
orderBya každý oddíl se seřadí pomocí této nové sady sloupců orderBy. - Pokud tyto sloupce nelze najít, vrátí se chyba.
Prázdná tabulka se vrátí, pokud:
- Odpovídající vnější hodnota
orderBysloupcepartitionByneexistuje v rámcirelation. - Celé okno je mimo oddíl nebo začátek okna je za jeho koncem.
Pokud použijete WINDOW počítaný sloupec definovaný ve stejné tabulce jako relationa orderBy vynechá se, vrátí se chyba.
Pokud je začátek okna před prvním řádkem, nastaví se na první řádek. Podobně platí, že pokud je konec okna za posledním řádkem oddílu, nastaví se na poslední řádek.
Můžete použít reset pouze ve vizuálních výpočtech a nemůžete ho použít v kombinaci s orderBy nebo partitionBy. Pokud reset je k dispozici, můžete zadat axis , ale nikoli relation.
Pokud je hodnota reset absolutní (kladné celé číslo HIGHESTPARENTnebo odkaz na pole) a výpočet se vyhodnotí na cílové úrovni v hierarchii nebo nad ní, výpočet se obnoví pro každý jednotlivý prvek. To znamená, že funkce se vyhodnocuje v rámci oddílu, který obsahuje pouze tento konkrétní prvek.
Příklady v tomto článku můžete použít s ukázkovým modelem Adventure Works DW 2020 Power BI Desktopu. Pokud chcete model získat, podívejte se na DAX ukázkový model.
Příklad 1 – míra
Následující míra:
3-day Average Price =
AVERAGEX (
WINDOW (
-2,
REL,
0,
REL,
SUMMARIZE ( ALLSELECTED ( 'Sales' ), 'Date'[Date], 'Product'[Product] ),
ORDERBY ( 'Date'[Date] ),
KEEP,
PARTITIONBY ( 'Product'[Product] )
),
CALCULATE ( AVERAGE ( Sales[Unit Price] ) )
)
Vrátí 3denní průměr jednotkových cen pro každý produkt. Třídenní okno se skládá ze tří dnů, kdy produkt měl prodej, ne nutně tři po sobě jdoucí kalendářní dny.
Příklad 2 – míra
Následující míra:
RunningSum =
SUMX (
WINDOW (
1,
ABS,
0,
REL,
ALLSELECTED ( 'Date'[Fiscal Year], 'Date'[Month Number Of Year] ),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Vrátí průběžný součet celkového prodeje podle počtu měsíců roku a restartuje se pro každý fiskální rok:
| Rok | Month Number Of Year | Částka prodeje | RunningSum |
|---|---|---|---|
| FY2018 | 0 | 1 327 675 Kč | 1 327 675 Kč |
| FY2018 | 2 | 3 936 463 Kč | 5 264 138 Kč |
| FY2018 | 3 | 700 873 Kč | 5 965 011 Kč |
| FY2018 | 4 | 1 519 275 Kč | 7 484 286 Kč |
| FY2018 | 5 | 2 960 378 Kč | 10 444 664 Kč |
| FY2018 | 6 | 1 487 671 Kč | 11 932 336 Kč |
| FY2018 | 7 | 1 423 357 Kč | 13 355 693 Kč |
| FY2018 | 8 | 2 057 902 Kč | 15 413 595 Kč |
| FY2018 | 9 | 2 523 948 Kč | 17 937 543 Kč |
| FY2018 | 10 | 561 681 Kč | 18 499 224 Kč |
| FY2018 | 11 | 4 764 920 Kč | 23 264 145 Kč |
| FY2018 | 12 | 596 747 Kč | 23 860 891 Kč |
| FY2019 | 0 | 1 847 692 Kč | 1 847 692 Kč |
| FY2019 | 2 | 2 829 362 Kč | 4 677 054 Kč |
| FY2019 | 3 | 2 092 434 Kč | 6 769 488 Kč |
| FY2019 | 4 | 2 405 971 Kč | 9 175 459 Kč |
| FY2019 | 5 | 3 459 444 Kč | 12 634 903 Kč |
| FY2019 | 6 | 2 850 649 Kč | 15 485 552 Kč |
| FY2019 | 7 | 2 939 691 Kč | 18 425 243 Kč |
| FY2019 | 8 | 3 964 801 Kč | 22 390 045 Kč |
| FY2019 | 9 | 3 287 606 Kč | 25 677 650 Kč |
| FY2019 | 10 | 2 157 287 Kč | 27 834 938 Kč |
| FY2019 | 11 | 3 611 092 Kč | 31 446 030 Kč |
| FY2019 | 12 | 2 624 078 Kč | 34 070 109 Kč |
| FY2020 | 0 | 3 235 187 Kč | 3 235 187 Kč |
| FY2020 | 2 | 4 070 046 Kč | 7 305 233 Kč |
| FY2020 | 3 | 4 429 833 Kč | 11 735 066 Kč |
| FY2020 | 4 | 4 002 614 Kč | 15 737 680 Kč |
| FY2020 | 5 | 5 265 797 Kč | 21 003 477 Kč |
| FY2020 | 6 | 3 465 241 Kč | 24 468 717 Kč |
| FY2020 | 7 | 3 513 064 Kč | 27 981 781 Kč |
| FY2020 | 8 | 5 247 165 Kč | 33 228 947 Kč |
| FY2020 | 9 | 5 104 088 Kč | 38 333 035 Kč |
| FY2020 | 10 | 3 542 150 Kč | 41 875 184 Kč |
| FY2020 | 11 | 5 151 897 Kč | 47 027 081 Kč |
| FY2020 | 12 | 4 851 194 Kč | 51 878 275 Kč |
Příklad 3 – výpočet vizuálu
Následující vizuální výpočet DAX dotazu:
TotalSalesRunningSumByYear =
SUMX ( WINDOW ( 0, ABS, 0, REL, ROWS, HIGHESTPARENT ), [SalesAmount] )
Vrátí kumulativní celkový prodej podle měsíce vypočítaný po jednotlivých letech. Místo hodnoty 1 lze použít HIGHESTPARENTstejnou hodnotu jako výsledek.
Následující snímek obrazovky ukazuje vizuální matici a výraz výpočtu vizuálu:
Příklad 4 – výpočet vizuálu
Následující vizuální výpočet DAX dotazu:
TotalSalesRunningSumByQuarter =
SUMX ( WINDOW ( 0, ABS, 0, REL,, -1 ), [SalesAmount] )
Vrátí kumulativní celkový prodej podle měsíce vypočítaný po jednotlivých čtvrtletích.
Hodnotu LOWESTPARENT lze použít místo -1 se stejným výsledkem.