WINDOW

Vzťahuje sa na:Vypočítaný stĺpecVypočítaná tabuľkaMeraťVýpočet vizuálu

Vráti viacero riadkov, ktoré sú umiestnené v rámci daného intervalu.

Syntax

WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parametre

Obdobie Definícia
from Udáva, kde sa okno začína. Môže to byť akýkoľvek výraz DAX, ktorý vráti skalárnu hodnotu.
Správanie závisí od parametra from_type:
– ak je from_type REL, počet riadkov, ktoré sa majú vrátiť (záporná hodnota) alebo dopredu (kladná hodnota) z aktuálneho riadka na získanie prvého riadka v okne.
- Ak from_type je ABS, a from je kladná, je to pozícia na začiatku okna od začiatku oblasti. Indexovanie je založené na 1 a 0 sa interpretuje ako 1. Napríklad hodnoty 0 a 1 znamenajú, že okno sa začína od začiatku oblasti. Ak from je toto záporné, ide o pozíciu začiatku okna od konca oblasti. -1 znamená posledný riadok v oblasti.
from_type Upraví správanie parametra from. Možné hodnoty sú ABS (absolútne) a REL (relatívny). Predvolená hodnota je REL.
to Rovnaké ako from, ale označuje koniec okna. V okne je zahrnutý posledný riadok.
to_type Rovnaké ako from_type, ale upravuje správanie to.
relation (Voliteľné) Výraz tabuľky, z ktorého sa vrátia výstupné riadky. Ak sa tento parameter použije vo výpočtoch vizuálu, akceptuje os vo vizuálnom tvare.
Ak je zadaný, všetky stĺpce v partitionBy musia pochádzať z neho alebo zo súvisiacej tabuľky.
Ak sa vynechá:
– Musíte zadať orderBy explicitne.
– Všetky orderBy výrazy a partitionBy musia byť plne kvalifikované názvy stĺpcov a musia pochádzať z jednej tabuľky.
– predvolene sa použije ALLSELECTED() všetkých stĺpcov v orderBy a partitionBy.
orderBy (Voliteľné) Klauzula ORDERBY() obsahujúca výrazy, ktoré definujú spôsob zoradenia každej oblasti.
Ak sa vynechá:
– Musíte zadať relation explicitne.
– Predvolene sa nastaví zoradenie podľa každého stĺpca v relation , ktorý ešte nie je zadaný v partitionBy.
blanks (Voliteľné) Enumerácia, ktorá definuje spôsob narábania s prázdnymi hodnotami pri zoraďovaní relation alebo axis.
Podporované hodnoty sú:
  • DEFAULT (predvolená hodnota), kde správanie číselných hodnôt je, že prázdne hodnoty sú zoradené medzi nulami a záporými hodnotami. Reťazce sa správajú tak, že prázdne hodnoty sú zoradené pred všetkými reťazcami vrátane prázdnych reťazcov.
  • FIRST: Prázdne hodnoty sa vždy zoraďujú na začiatku bez ohľadu na vzostupné alebo zostupné poradie zoradenia.
  • LAST: Prázdne hodnoty sa vždy zoraďujú na konci bez ohľadu na vzostupné alebo zostupné poradie zoradenia.

Keď zadáte parameter aj blanks prázdne hodnoty vo ORDERBYfunkcii () pre jednotlivé výrazy, blanks pri výraze orderBy má prednosť príslušný výraz orderBy. Výrazy OrderBy bez blanks zadania parametra v blanks nadradenej funkcii.
partitionBy (Voliteľné) Klauzula PARTITIONBY() obsahujúca stĺpce, ktoré definujú spôsob relation rozdelenia. Ak sa vynechá, relation sa považuje za jednu oblasť.
matchBy (Voliteľné) Klauzula MATCHBY() obsahujúca stĺpce, ktoré definujú, ako sa majú zhodovať s údajmi a identifikovať aktuálny riadok.
reset (Voliteľné) K dispozícii iba vo výpočtoch vizuálu. Udáva, či sa výpočet resetuje a na akej úrovni hierarchie stĺpcov tvaru vizuálu. Prijaté hodnoty sú: odkaz na pole na stĺpec v aktuálnom tvare vizuálu, NONE (predvolené), LOWESTPARENT, HIGHESTPARENTalebo celé číslo. Správanie závisí od celočíselného znamienka:
– Ak je tento parameter vynechaný, výpočet sa nevynuluje. Zodpovedá NONE.
– ak je kladné, celé číslo identifikuje stĺpec začínajúci od najvyššej, nezávisle od zrna. HIGHESTPARENT zodpovedá 1.
– ak je záporné, celé číslo identifikuje stĺpec začínajúci od najnižšej hodnoty vo vzťahu k aktuálnemu zrnu. LOWESTPARENT je ekvivalentom čísla -1.

Vrátená hodnota

Všetky riadky z okna.

Poznámky

S výnimkou stĺpcov pridaných funkciami DAX tabuľky, každý stĺpec v relation (keď matchBy nie je prítomný) alebo každý stĺpec v matchBy a partitionBy (ak matchBy je prítomný), musí mať zodpovedajúcu vonkajšiu hodnotu, ktorá pomôže definovať aktuálny riadok, na ktorom sa má pracovať. Ak from_type aj to_type obe majú hodnotu ABS, nasledujúce sa vzťahuje iba na stĺpce partitionBy :

  • Ak existuje presne jeden zodpovedajúci vonkajší stĺpec, použije sa jeho hodnota.
  • Ak neexistuje žiadny zodpovedajúci vonkajší stĺpec:
    • WINDOW najprv určí všetky stĺpce, ktoré nemajú žiadny príslušný vonkajší stĺpec.
    • Pre každú kombináciu existujúcich hodnôt pre tieto stĺpce v nadradenom kontexte WINDOW sa vyhodnotí WINDOWa vrátia sa zodpovedajúce riadky.
    • WINDOWKonečný výstup predstavuje zjednotenie týchto riadkov.
  • Ak existuje viac ako jeden zodpovedajúci vonkajší stĺpec, vráti sa chyba.

Ak relation funkcie tabuľky pridali všetky stĺpce DAX, vráti sa chyba.

Ak matchBy je prítomná, WINDOW pokúsi sa použiť matchBy a partitionBy stĺpce na identifikáciu riadka. Ak matchBy nie je prítomný a stĺpce zadané v orderBy a partitionBy nemôžu jednoznačne identifikovať každý riadok v relation:

  • WINDOW sa snaží nájsť najmenší počet ďalších stĺpcov požadovaných na jedinečnú identifikáciu každého riadka.
  • Ak sa tieto stĺpce dajú nájsť, WINDOW automaticky pripojí tieto nové stĺpce k orderBya každá oblasť sa zoradí pomocou tejto novej množiny stĺpcov orderBy.
  • Ak sa takéto stĺpce nedajú nájsť, vráti sa chyba.

Prázdna tabuľka sa vráti, ak:

  • Zodpovedajúca vonkajšia hodnota stĺpca orderBy alebo partitionBy neexistuje v rámci relation.
  • Celé okno je mimo oblasti alebo začiatok okna je po jeho konci.

Ak použijete v WINDOW rámci vypočítaného stĺpca definovaného v tej istej tabuľke ako relationa orderBy hodnota sa vynechá, vráti sa chyba.

Ak je začiatok okna pred prvým riadkom, je nastavený na prvý riadok. Podobne, ak je koniec okna za posledným riadkom oblasti, nastaví sa na posledný riadok.

Môžete použiť reset iba vo vizuálnych výpočtoch a nemôžete ich použiť v kombinácii s orderBy alebo partitionBy. Ak reset je prítomná, môžete zadať argument axis , ale nie relationhodnotu .

Ak je hodnota absolútna reset (kladné celé číslo, HIGHESTPARENTalebo odkaz na pole) a výpočet sa vyhodnotí v hierarchii na cieľovej úrovni alebo nad ňou, výpočet sa resetuje pre každý jednotlivý prvok. To znamená, že funkcia sa vyhodnotí v rámci oblasti, ktorá obsahuje iba tento konkrétny prvok.

Príklady v tomto článku možno použiť so vzorovým modelom aplikácie Power BI Desktop Adventure Works DW 2020. Ak chcete získať model, pozrite si DAX ukážkový model.

Príklad 1 – mierka

Nasledujúca mierka:

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áti 3-dňový priemer jednotkových cien pre každý produkt. Trojdňové okno pozostáva z troch dní, počas ktorých produkt mal predaj, nie nevyhnutne tri po sebe nasledujúce kalendárne dni.

Príklad 2 – mierka

Nasledujúca mierka:

RunningSum =
SUMX (
    WINDOW (
        1,
        ABS,
        0,
        REL,
        ALLSELECTED ( 'Date'[Fiscal Year], 'Date'[Month Number Of Year] ),
        PARTITIONBY ( 'Date'[Fiscal Year] )
    ),
    [Total Sales]
)

Vráti priebežný súčet celkového predaja podľa počtu mesiacov v roku a reštartovanie každého fiškálneho roka:

Rok Číslo mesiaca v roku Suma predaja Medzisum
FR2018 1 1 327 675 USD 1 327 675 USD
FR2018 2 3 936 463 USD 5 264 138 USD
FR2018 3 700 873 USD 5 965 011 USD
FR2018 4 1 519 275 USD 7 484 286 USD
FR2018 5 2 960 378 USD 10 444 664 USD
FR2018 6 1 487 671 USD 11 932 336 USD
FR2018 7 1 423 357 USD 13 355 693 USD
FR2018 8 2 057 902 USD 15 413 595 USD
FR2018 9 2 523 948 USD 17 937 543 USD
FR2018 10 561 681 USD 18 499 224 USD
FR2018 11 4 764 920 USD 23 264 145 USD
FR2018 12 596 747 USD 23 860 891 USD
FR2019 1 1 847 692 USD 1 847 692 USD
FR2019 2 2 829 362 USD 4 677 054 USD
FR2019 3 2 092 434 USD 6 769 488 USD
FR2019 4 2 405 971 USD 9 175 459 USD
FR2019 5 3 459 444 USD 12 634 903 USD
FR2019 6 2 850 649 USD 15 485 552 USD
FR2019 7 2 939 691 USD 18 425 243 USD
FR2019 8 3 964 801 USD 22 390 045 USD
FR2019 9 3 287 606 USD 25 677 650 USD
FR2019 10 2 157 287 USD 27 834 938 USD
FR2019 11 3 611 092 USD 31 446 030 USD
FR2019 12 2 624 078 USD 34 070 109 USD
FR2020 1 3 235 187 USD 3 235 187 USD
FR2020 2 4 070 046 USD 7 305 233 USD
FR2020 3 4 429 833 USD 11 735 066 USD
FR2020 4 4 002 614 USD 15 737 680 USD
FR2020 5 5 265 797 USD 21 003 477 USD
FR2020 6 3 465 241 USD 24 468 717 USD
FR2020 7 3 513 064 USD 27 981 781 USD
FR2020 8 5 247 165 USD 33 228 947 USD
FR2020 9 5 104 088 USD 38 333 035 USD
FR2020 10 3 542 150 USD 41 875 184 USD
FR2020 11 5 151 897 USD 47 027 081 USD
FR2020 12 4 851 194 USD 51 878 275 USD

Príklad 3 – výpočet vizuálu

Nasledujúci výpočet vizuálu DAX dotaz:

TotalSalesRunningSumByYear =
SUMX ( WINDOW ( 0, ABS, 0, REL, ROWS, HIGHESTPARENT ), [SalesAmount] )

Vráti kumulatívny celkový predaj podľa mesiaca vypočítaný pozdĺž každého roka. S rovnakým výsledkom sa môže použiť hodnota 1 namiesto HIGHESTPARENT.

Snímka obrazovky nižšie znázorňuje maticu vizuálu a výraz výpočtu vizuálu:

výpočtu vizuálu

Príklad 4 – výpočet vizuálu

Nasledujúci výpočet vizuálu DAX dotaz:

TotalSalesRunningSumByQuarter =
SUMX ( WINDOW ( 0, ABS, 0, REL,, -1 ), [SalesAmount] )

Vráti kumulatívny celkový predaj podľa mesiaca vypočítaný pozdĺž každého štvrťroku. S rovnakým výsledkom sa môže použiť hodnota LOWESTPARENT namiesto hodnoty -1.