WINDOW
Vzťahuje sa na:vypočítaný stĺpec
vypočítanej tabuľky
vizuálového výpočtu
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 je from_type ABSa 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 je from záporná, je to pozícia na 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 je zadaný, všetky stĺpce v partitionBy musia pochádzať z neho alebo zo súvisiacej tabuľky.
Ak tento argument vynecháte: - orderBy musí byť explicitne zadaný.– všetky výrazy orderBy 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 . |
axis |
(Voliteľné) Os v tvare vizuálu. K dispozícii iba vo výpočtoch vizuálu a nahrádza relation . |
orderBy |
(Voliteľné) Klauzula ORDERBY() obsahujúca výrazy, ktoré definujú spôsob zoradenia každej oblasti.
Ak tento argument vynecháte: - relation musí byť explicitne zadaný.
– predvolene sa zoradí 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ú:
Všimnite si, že keď sú v ORDERBY() funkcie pri jednotlivých výrazoch zadané hodnoty blanks blanks na výraze orderBy má prednosť pre príslušný výraz orderBy a výrazy orderBy bez blanks zadania zachová parameter blanks v nadradenej funkcii. |
partitionBy |
(Voliteľné) Klauzula PARTITIONBY() obsahujúca stĺpce, ktoré definujú spôsob rozdelenia relation . 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 , HIGHESTPARENT alebo celé číslo. Správanie závisí od celočíselného znamienka: – Ak je hodnota nula alebo je 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 musí mať každý stĺpec v relation
, ak nie je prítomný matchBy
, alebo každý stĺpec v matchBy
a partitionBy
, keď je prítomný matchBy
, musí mať zodpovedajúcu vonkajšiu hodnotu, ktorá pomáha definovať aktuálny riadok, s ktorým sa má pracovať. Ak obe from_type
a to_type
majú ABShodnotu , potom sa vzťahuje len 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 WINDOWsa vyhodnotí WINDOW a vrátia sa zodpovedajúce riadky.
- WINDOW konečný výstup je zjednotenie týchto riadkov.
- Ak existuje viac ako jeden zodpovedajúci vonkajší stĺpec, vráti sa chyba.
Ak DAX funkcie tabuľky pridali všetky stĺpce relation
, vráti sa chyba.
Ak existuje matchBy
, WINDOW sa pokúsi 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 jedinečne identifikovať každý riadok v relation
, potom:
- WINDOW sa pokúsi nájsť najmenší počet ďalších stĺpcov potrebný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
orderBy
, a 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
alebopartitionBy
neexistuje v rámcirelation
. - Celé okno je mimo oblasti alebo začiatok okna je po jeho skončení.
Ak WINDOW použijete v rámci vypočítaného stĺpca definovaného v tej istej tabuľke ako relation
, a orderBy
sa vynechá, vráti sa chyba.
Ak sa ukáže, že začiatok okna je pred prvým riadkom, je nastavený na prvý riadok. Podobne ak je koniec okna za posledným riadkom oblasti, nastaví sa na posledný riadok.
reset
možno použiť iba vo vizuálnych výpočtoch a nemožno ho použiť v kombinácii s orderBy
alebo partitionBy
. Ak je prítomná reset
, možno zadať axis
ale relation
nedá.
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. Všimnite si, že trojdňové okno sa skladá z troch dní, v ktorých produkt obsahuje 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 |
FY2019 | 1 | 1 847 692 USD | 1 847 692 USD |
FY2019 | 2 | 2 829 362 USD | 4 677 054 USD |
FY2019 | 3 | 2 092 434 USD | 6 769 488 USD |
FY2019 | 4 | 2 405 971 USD | 9 175 459 USD |
FY2019 | 5 | 3 459 444 USD | 12 634 903 USD |
FY2019 | 6 | 2 850 649 USD | 15 485 552 USD |
FY2019 | 7 | 2 939 691 USD | 18 425 243 USD |
FY2019 | 8 | 3 964 801 USD | 22 390 045 USD |
FY2019 | 9 | 3 287 606 USD | 25 677 650 USD |
FY2019 | 10 | 2 157 287 USD | 27 834 938 USD |
FY2019 | 11 | 3 611 092 USD | 31 446 030 USD |
FY2019 | 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. Hodnoty 1 a -2 sa môžu použiť namiesto HIGHESTPARENT
s rovnakými výsledkami.
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úvisiaci obsah
INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM