Zdieľať cez


OKNO

Vzťahuje sa na: Vypočítaný stĺpec Vypočítaná tabuľka Výpočet mierky Vizuál

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
od Udáva, kde sa okno začína. Môže to byť ľubovoľný 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, aby sa získal prvý riadok v okne.
- Ak <from_type> je ABS a <z> je kladné, potom je to pozícia na začiatku okna od začiatku oblasti. Indexovanie je založené na 1. Hodnota 1 napríklad znamená, že okno sa začína od začiatku oblasti. Ak <je hodnota záporná> , je to pozícia na začiatku okna od konca oblasti. -1 znamená posledný riadok v oblasti.
from_type Upravuje správanie parametra <z> . Možné hodnoty sú ABS (absolútne) a REL (relatívne). Predvolená hodnota je REL.
Komu Rovnaké ako <od,> ale označuje koniec okna. V okne je zahrnutý posledný riadok.
to_type Rovnaké ako <from_type>, ale upravuje správanie<.>
vzťah (Voliteľné) Výraz tabuľky, z ktorého sa vrátia výstupné riadky.
Ak je zadaný, všetky stĺpce v <oblasti partitionBy> musia pochádzať z neho alebo zo súvisiacej tabuľky.
Ak sa vynechá:
- <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 nastaví na ALLSELECTED() všetkých stĺpcov v <parametroch orderBy> a <partitionBy>.
Os X (Voliteľné) Os v tvare vizuálu. K dispozícii iba vo výpočtoch vizuálu a nahrádza <vzťah>.
orderBy (Voliteľné) Klauzula ORDERBY() obsahujúca výrazy, ktoré definujú, ako je každá oblasť zoradená.
Ak sa vynechá:
– <vzťah> musí byť explicitne zadaný.
– Predvolene sa zoradí podľa každého stĺpca vo <vzťahu> , ktorý ešte nie je zadaný v parametri <partitionBy>.
Prázdne (Voliteľné) Enumerácia, ktorá definuje spôsob narábania s prázdnymi hodnotami pri zoraďovaní.
Tento parameter je rezervovaný pre budúce použitie.
V súčasnosti je jedinou podporovanou hodnotou DEFAULT, kde je správanie číselných hodnôt prázdne hodnoty zoradené medzi nulami a záporné hodnoty. Správanie reťazcov je prázdne hodnoty zoradené pred všetkými reťazcami vrátane prázdnych reťazcov.
partitionBy (Voliteľné) Klauzula PARTITIONBY() obsahujúca stĺpce, ktoré definujú, ako <je vzťah> rozdelený. Ak je tento parameter vynechaný, <vzťah> sa považuje za jednu oblasť.
matchBy (Voliteľné) Klauzula MATCHBY() obsahujúca stĺpce, ktoré definujú, ako sa majú zhodovať údaje a identifikovať aktuálny riadok.
vynulovanie (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ú: NONE, LOWESTPARENT, HIGHESTPARENT alebo celé číslo. Správanie závisí od celočíselného znamienka:
– Ak je tento parameter vynechaný, výpočet sa nevynuluje. Zodpovedá žiadnej z týchto možností.
– Ak je kladné, celé číslo identifikuje stĺpec začínajúci od najvyššej, nezávisle od zrna. Funkcia HIGHESTPARENT sa rovná hodnote 1.
– Ak je záporná, celé číslo identifikuje stĺpec začínajúci od najnižšej hodnoty vzhľadom na aktuálne vlákno. Funkcia LOWESTPARENT je ekvivalentom hodnoty -1.

Vrátená hodnota

Všetky riadky z okna.

Poznámky

Okrem stĺpcov pridaných funkciami tabuľky jazyka DAX musí mať každý stĺpec vo <vzťahu, keď <nie je k dispozícii matchBy>, alebo každý stĺpec v <matchBy> a <partitionBy>, ak <je k dispozícii matchBy>, mať zodpovedajúcu vonkajšiu hodnotu, ktorá pomôže definovať aktuálny riadok, s ktorým> sa má pracovať. Ak <from_type> aj <to_type> majú hodnotu ABS, potom sa nasledujúce 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:
    • Funkcia 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 funkcie WINDOW sa vyhodnotí funkcia WINDOW a vrátia sa zodpovedajúce riadky.
    • Konečný výstup funkcie WINDOW je zjednotenie týchto riadkov.
  • Ak existuje viac ako jeden zodpovedajúci vonkajší stĺpec, vráti sa chyba.

Ak funkcie tabuľky DAX pridali všetky <stĺpce vzťahu>, vráti sa chyba.

Ak <je k dispozícii hodnota matchBy> , funkcia WINDOW sa pokúsi použiť <stĺpce matchBy> a <partitionBy> na identifikáciu riadka.
Ak <nie je matchBy> prítomná a stĺpce zadané v parametroch <orderBy> a <partitionBy> nemôžu jednoznačne identifikovať každý riadok vo <vzťahu>, potom:

  • Funkcia WINDOW sa pokúsi 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ť, funkcia WINDOW automaticky pripojí tieto nové stĺpce k parametru <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> alebo <partitionBy> neexistuje v rámci <vzťahu>.<
  • Celé okno je mimo oblasti alebo začiatok okna je po jeho skončení.

Ak sa funkcia WINDOW použije v rámci vypočítaného stĺpca definovaného v rovnakej tabuľke ako <vzťah> 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 výpočtoch vizuálu a nemožno ho použiť v kombinácii s parametrom <orderBy> alebo <partitionBy>. Ak <je obnovenie> k dispozícii, os> možno zadať, <ale <vzťah> nemôže.

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 dotaz DAX pre výpočet vizuálu:

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 funkcie 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čet vizuálu DAX

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

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

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.

INDEX
MOVINGAVERAGE (POSUNUTIE OBJEMOV)
OFSET
ORDERBY
PARTITIONBY
ROZSAH
RAD
ROWNUMBERRUNNINGSUM