Sdílet prostřednictvím


WINDOW

platí pro:Počítaný sloupecPočítaná tabulkamíravizuální

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 je from_typeABSa from 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 je from 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 je zadán, musí všechny sloupce v partitionBy pocházet z ní nebo související tabulka.
Pokud tento parametr vynecháte:
- orderBy musí být explicitně zadán.
– Všechny výrazy orderBy a partitionBy musí být plně kvalifikované názvy sloupců a pocházet z jedné tabulky.
– výchozí hodnota je ALLSELECTED() všech sloupců v orderBy a partitionBy.
axis (Volitelné) Osa ve vizuálním obrazci. Dostupné pouze ve vizuálních výpočtech a nahrazuje relation.
orderBy (Volitelné) Klauzule ORDERBY() obsahující výrazy definující způsob řazení jednotlivých oddílů.
Pokud tento parametr vynecháte:
- relation musí být explicitně zadán.
– Výchozí nastavení řazení podle každého sloupce v relation, který ještě není zadán v partitionBy.
blanks (Volitelné) Výčet, který definuje, jak zpracovat prázdné hodnoty při řazení relation nebo axis.
Podporované hodnoty jsou:
  • DEFAULT (výchozí hodnota), kde chování číselných hodnot je prázdné hodnoty seřazené mezi nulou a zápornými hodnotami. Chování řetězců je prázdné hodnoty seřazené před všemi řetězci, včetně prázdných řetězců.
  • FIRST, prázdné hodnoty jsou vždy seřazeny na začátku bez ohledu na vzestupné nebo sestupné pořadí řazení.
  • LAST, prázdné hodnoty jsou vždy seřazeny na konci bez ohledu na vzestupné nebo sestupné pořadí řazení.

Poznámka: Pokud je zadán parametr blanks a prázdné hodnoty ve funkci ORDERBY() () u jednotlivých výrazů, blanks pro jednotlivý výraz orderBy má prioritu pro příslušný výraz orderBy a výrazy orderBy bez blanks budou respektovat parametr blanks nadřazené funkce.
partitionBy (Volitelné) Klauzule () obsahující sloupce definující způsob rozdělení . Pokud tento parametr vynecháte, relation se považuje za jeden oddíl.
matchBy (Volitelné) MATCHBY() klauzule 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. Toto 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

S výjimkou sloupců přidaných funkcemi DAX tabulky musí mít každý sloupec v relation, pokud matchBy neexistuje, nebo každý sloupec v matchBy a partitionBy, pokud je matchBy k dispozici, musí mít odpovídající vnější hodnotu, aby bylo možné definovat aktuální řádek, na kterém se má pracovat. Pokud from_type i to_type mají ABShodnotu, platí následující pouze pro partitionBy sloupce:

  • Pokud je právě jeden odpovídající vnější sloupec, použije se jeho hodnota.
  • Pokud neexistuje odpovídající vnější sloupec:
    • WINDOW nejprve určí všechny sloupce, které nemají odpovídající vnější sloupec.
    • Pro každou kombinaci existujících hodnot pro tyto sloupce v nadřazené kontextu WINDOWse vyhodnotí WINDOW a vrátí se odpovídající řádky.
    • WINDOW konečný výstup je sjednocení 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 existuje, WINDOW se pokusí k identifikaci řádku použít matchBy a partitionBy sloupce. Pokud matchBy neexistuje a sloupce zadané v orderBy a partitionBy nemohou jednoznačně identifikovat každý řádek v relation, pak:

  • WINDOW se pokusí najít nejmenší počet dalších sloupců potřebných k jednoznačné identifikaci každého řádku.
  • Pokud tyto sloupce najdete, WINDOW tyto nové sloupce automaticky připojí k 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 sloupce orderBy nebo partitionBy neexistuje v rámci relation.
  • Celé okno je mimo oddíl nebo začátek okna je za koncem okna.

Pokud WINDOW použijete v počítaném sloupci definovaném ve stejné tabulce jako relationa orderBy vynecháte, vrátí se chyba.

Pokud se začátek okna zobrazí 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.

reset lze použít pouze ve vizuálních výpočtech a nelze jej použít v kombinaci s orderBy nebo partitionBy. Pokud je reset, je možné zadat axis, ale relation nelze.

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. Všimněte si, že třídenní okno se skládá ze tří dnů, ve kterých má produkt 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. Hodnoty 1 a -2 lze použít místo HIGHESTPARENTse stejnými výsledky.

Následující snímek obrazovky ukazuje vizuální matici a výraz výpočtu vizuálu:

DAX 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.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM