Del via


WINDOW

gjelder:beregnet kolonneberegnet tabellmålevisualobjektberegning

Returnerer flere rader som er plassert innenfor det angitte intervallet.

Syntaks

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

Parametere

Term Definisjon
from Angir hvor vinduet starter. Det kan være et hvilket som helst DAX uttrykk som returnerer en skalarverdi.
Virkemåten avhenger av from_type-parameteren:
– Hvis from_type er REL, antall rader som skal gå tilbake (negativ verdi) eller fremover (positiv verdi) fra gjeldende rad for å få den første raden i vinduet.
– Hvis from_type er ABS, og from er positiv, er det posisjonen til starten av vinduet fra begynnelsen av partisjonen. Indeksering er 1-basert og 0 tolkes som 1. 0 og 1 betyr for eksempel at vinduet starter fra begynnelsen av partisjonen. Hvis from er negativ, er det posisjonen til starten av vinduet fra slutten av partisjonen. -1 betyr den siste raden i partisjonen.
from_type Endrer virkemåten til from-parameteren. Mulige verdier er ABS (absolutt) og REL (relativ). Standard er REL.
to Samme som from, men angir slutten av vinduet. Den siste raden er inkludert i vinduet.
to_type Samme som from_type, men endrer virkemåten til to.
relation (Valgfritt) Et tabelluttrykk som utdataradene returneres fra.
Hvis angitt, må alle kolonnene i partitionBy komme fra den eller en relatert tabell.
Hvis utelatt:
- orderBy må angis eksplisitt.
– Alle orderBy- og partitionBy uttrykk må være fullstendige kolonnenavn og komme fra én enkelt tabell.
– standarder for ALLSELECTED() for alle kolonner i orderBy og partitionBy.
axis (Valgfritt) En akse i den visuelle figuren. Bare tilgjengelig i visuelle beregninger, og erstatter relation.
orderBy (Valgfritt) En ORDERBY() setning som inneholder uttrykkene som definerer hvordan hver partisjon sorteres.
Hvis utelatt:
- relation må angis eksplisitt.
– Standarder for bestilling av hver kolonne i relation som ikke allerede er angitt i partitionBy.
blanks (Valgfritt) En opplisting som definerer hvordan du håndterer tomme verdier når du sorterer relation eller axis.
De støttede verdiene er:
  • DEFAULT (standardverdien), der virkemåten for numeriske verdier er tomme verdier, er sortert mellom null og negative verdier. Virkemåten for strenger er tomme verdier ordnes før alle strenger, inkludert tomme strenger.
  • FIRSTer blanks alltid sortert i begynnelsen, uavhengig av stigende eller synkende sorteringsrekkefølge.
  • LASTer tomme celler alltid ordnet på slutten, uavhengig av stigende eller synkende sorteringsrekkefølge.

Obs! Når blanks parameteren og tomrommene i ORDERBY()-funksjonen på individuelle uttrykk er angitt, prioriteres blanks enkelt orderBy-uttrykk for det relevante orderBy-uttrykket, og orderBy-uttrykk uten at blanks angis, respekterer blanks parameteren for den overordnede funksjonen.
partitionBy (Valgfritt) En PARTITIONBY() setningsdel som inneholder kolonnene som definerer hvordan relation partisjoneres. Hvis utelatt, behandles relation som én enkelt partisjon.
matchBy (Valgfritt) En MATCHBY() setningsdel som inneholder kolonnene som definerer hvordan dataene skal samsvare og identifisere gjeldende rad.
reset (Valgfritt) Bare tilgjengelig i visuelle beregninger. Angir om beregningen tilbakestilles, og på hvilket nivå i kolonnehierarkiet for visualobjektfiguren. Godtatte verdier er: en feltreferanse til en kolonne i gjeldende visuelle figur, NONE (standard), LOWESTPARENT, HIGHESTPARENTeller et heltall. Virkemåten avhenger av heltallstegnet:
– Hvis null eller utelatt, tilbakestilles ikke beregningen. Tilsvarer NONE.
– Hvis det er positivt, identifiserer heltallet kolonnen fra den høyeste, uavhengige av korn. HIGHESTPARENT tilsvarer 1.
– Hvis negativt, identifiserer heltallet kolonnen fra det laveste, i forhold til gjeldende korn. LOWESTPARENT tilsvarer -1.

Returverdi

Alle rader fra vinduet.

Merknader

Bortsett fra kolonner som legges til av DAX tabellfunksjoner, må hver kolonne i relation, når matchBy ikke finnes, eller hver kolonne i matchBy og partitionBy, når matchBy finnes, ha en tilsvarende ytre verdi for å definere gjeldende rad som skal brukes. Hvis from_type og to_type begge har ABS, gjelder følgende bare for de partitionBy kolonnene:

  • Hvis det er nøyaktig én tilsvarende ytre kolonne, brukes verdien.
  • Hvis det ikke finnes noen tilsvarende ytre kolonne:
    • WINDOW bestemmer først alle kolonner som ikke har noen tilsvarende ytre kolonne.
    • For hver kombinasjon av eksisterende verdier for disse kolonnene i WINDOWoverordnede kontekst, evalueres WINDOW, og de tilsvarende radene returneres.
    • WINDOW endelige utdataene er en sammensluting av disse radene.
  • Hvis det er mer enn én tilsvarende ytre kolonne, returneres en feil.

Hvis alle kolonnene i relationble lagt til av DAX tabellfunksjoner, returneres en feil.

Hvis matchBy finnes, prøver WINDOW å bruke matchBy og partitionBy kolonner til å identifisere raden. Hvis matchBy ikke finnes, og kolonnene som er angitt i orderBy og partitionBy ikke kan identifisere hver rad i relationunikt, så:

  • WINDOW vil prøve å finne det minste antallet ekstra kolonner som kreves for å identifisere hver rad unikt.
  • Hvis du finner slike kolonner, vil WINDOW automatisk tilføye disse nye kolonnene til orderBy, og hver partisjon sorteres ved hjelp av dette nye settet med orderBy-kolonner.
  • Hvis slike kolonner ikke blir funnet, returneres en feil.

En tom tabell returneres hvis:

  • Den tilsvarende ytre verdien for en orderBy eller partitionBy kolonne finnes ikke i relation.
  • Hele vinduet er utenfor partisjonen, eller begynnelsen av vinduet er etter slutten.

Hvis WINDOW brukes i en beregnet kolonne som er definert i samme tabell som relation, og orderBy utelates, returneres en feil.

Hvis begynnelsen av vinduet viser seg å være før den første raden, er den satt til den første raden. På samme måte, hvis slutten av vinduet er etter den siste raden i partisjonen, er den satt til den siste raden.

reset kan bare brukes i visuelle beregninger, og kan ikke brukes sammen med orderBy eller partitionBy. Hvis reset finnes, kan axis angis, men relation kan ikke.

Eksempel 1 – mål

Følgende mål:

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]))
)

Returnerer 3-dagers gjennomsnittet av enhetspriser for hvert produkt. Vær oppmerksom på at 3-dagersvinduet består av tre dager der produktet har salg, ikke nødvendigvis tre påfølgende kalenderdager.

Eksempel 2 – mål

Følgende mål:

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

Returnerer løpende sum for totalt salg etter månedsnummer, og starter på nytt for hvert regnskapsår:

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

Eksempel 3 – visuell beregning

Følgende visuelle beregning DAX spørring:

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

Returnerer det kumulative totale salget etter måned, beregnet sammen hvert år. Verdiene 1 og -2 kan brukes i stedet for HIGHESTPARENT, med de samme resultatene.

Skjermbildet nedenfor viser den visuelle matrisen og beregningsuttrykket for visualobjekter:

DAX beregning av visualobjekter

Eksempel 4 – visuell beregning

Følgende visuelle beregning DAX spørring:

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

Returnerer det kumulative totale salget etter måned, beregnet langs hvert kvartal.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM