Læs på engelsk

Del via


WINDOW

gælder for:beregnet kolonneberegnet tabelberegning af målingvisualisering

Returnerer flere rækker, der er placeret inden for det angivne interval.

Syntaks

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

Parametre

Begreb Definition
from Angiver, hvor vinduet starter. Det kan være et hvilket som helst DAX udtryk, der returnerer en skalarværdi.
Funktionsmåden afhænger af parameteren from_type:
– Hvis from_type er REL, er det antal rækker, der skal gå tilbage (negativ værdi) eller fremad (positiv værdi) fra den aktuelle række for at hente den første række i vinduet.
– Hvis from_type er ABS, og from er positiv, er det placeringen af vinduets start fra starten af partitionen. Indeksering er 1-baseret, og 0 fortolkes som 1. 0 og 1 betyder f.eks., at vinduet starter fra starten af partitionen. Hvis from er negativ, er det placeringen af vinduets start fra slutningen af partitionen. -1 betyder den sidste række i partitionen.
from_type Ændrer funktionsmåden for parameteren from. Mulige værdier er ABS (absolut) og REL (relativ). Standard er REL.
to Det samme som from, men angiver slutningen af vinduet. Den sidste række er inkluderet i vinduet.
to_type Samme som from_type, men ændrer funktionsmåden for to.
relation (Valgfrit) Et tabeludtryk, som outputrækkerne returneres fra.
Hvis det er angivet, skal alle kolonner i partitionBy komme fra den eller en relateret tabel.
Hvis udeladt:
- orderBy skal angives eksplicit.
– Alle udtryk for orderBy og partitionBy skal være fuldt kvalificerede kolonnenavne og komme fra en enkelt tabel.
– ALLSELECTED() som standard for alle kolonner i orderBy og partitionBy.
axis (Valgfrit) En akse i visualiseringsfiguren. Kun tilgængelig i visuelle beregninger og erstatter relation.
orderBy (Valgfrit) En ORDERBY() delsætning, der indeholder de udtryk, der definerer, hvordan hver partition sorteres.
Hvis udeladt:
- relation skal angives eksplicit.
– Som standard sorteres efter hver kolonne i relation, der ikke allerede er angivet i partitionBy.
blanks (Valgfrit) En optælling, der definerer, hvordan tomme værdier skal håndteres ved sortering af relation eller axis.
De understøttede værdier er:
  • DEFAULT (standardværdien), hvor funktionsmåden for numeriske værdier er tomme værdier, sorteres mellem nul og negative værdier. Funktionsmåden for strenge er tomme værdier sorteres før alle strenge, herunder tomme strenge.
  • FIRSTsorteres tomme værdier altid i starten, uanset stigende eller faldende sorteringsrækkefølge.
  • LASTsorteres tomme værdier altid i slutningen, uanset stigende eller faldende sorteringsrækkefølge.

Bemærk, at når blanks-parameteren og tomme værdier i funktionen ORDERBY() for individuelle udtryk begge er angivet, prioriteres blanks i det enkelte orderBy-udtryk for det relevante orderBy-udtryk, og orderBy-udtryk, uden at blanks er angivet, vil overholde parameteren blanks for den overordnede funktion.
partitionBy (Valgfrit) En PARTITIONBY() delsætning, der indeholder de kolonner, der definerer, hvordan relation partitioneres. Hvis den udelades, behandles relation som en enkelt partition.
matchBy (Valgfrit) En MATCHBY() delsætning, der indeholder de kolonner, der definerer, hvordan dataene skal matche og identificere den aktuelle række.
reset (Valgfrit) Kun tilgængelig i visuelle beregninger. Angiver, om beregningen nulstilles, og på hvilket niveau i den visuelle figurs kolonnehierarki. Accepterede værdier er: en feltreference til en kolonne i den aktuelle visualiseringsfigur, NONE (standard), LOWESTPARENT, HIGHESTPARENTeller et heltal. Funktionsmåden afhænger af heltalstegnet:
– Hvis nul eller udeladt, nulstilles beregningen ikke. Svarer til NONE.
– Hvis den er positiv, identificerer heltalet kolonnen, der starter fra den højeste, uafhængig af detaljering. HIGHESTPARENT svarer til 1.
– Hvis det er negativt, identificerer heltalet kolonnen med start fra det laveste i forhold til den aktuelle detaljering. LOWESTPARENT svarer til -1.

Returværdi

Alle rækker fra vinduet.

Bemærkninger

Med undtagelse af kolonner, der tilføjes af DAX tabelfunktioner, skal hver kolonne i relation, når matchBy ikke findes, eller hver kolonne i matchBy og partitionBy, når matchBy er til stede, have en tilsvarende ydre værdi for at hjælpe med at definere den aktuelle række, der skal arbejdes på. Hvis from_type og to_type begge har værdien ABS, gælder følgende kun for de partitionBy kolonner:

  • Hvis der er nøjagtigt én tilsvarende ydre kolonne, bruges dens værdi.
  • Hvis der ikke er en tilsvarende ydre kolonne:
    • WINDOW bestemmer først alle kolonner, der ikke har en tilsvarende ydre kolonne.
    • For hver kombination af eksisterende værdier for disse kolonner i WINDOWoverordnede kontekst evalueres WINDOW, og de tilsvarende rækker returneres.
    • WINDOW endelige output er en samling af disse rækker.
  • Hvis der er mere end én tilsvarende ydre kolonne, returneres der en fejl.

Hvis alle relation's kolonner blev tilføjet af DAX tabelfunktioner, returneres der en fejl.

Hvis matchBy findes, forsøger WINDOW at bruge matchBy og partitionBy kolonner til at identificere rækken. Hvis matchBy ikke findes, og de kolonner, der er angivet i orderBy og partitionBy, ikke entydigt kan identificere hver række i relation, kan:

  • WINDOW vil forsøge at finde det mindste antal ekstra kolonner, der kræves for entydigt at identificere hver række.
  • Hvis sådanne kolonner findes, føjer WINDOW automatisk disse nye kolonner til orderBy, og hver partition sorteres ved hjælp af dette nye sæt orderBy-kolonner.
  • Hvis sådanne kolonner ikke blev fundet, returneres der en fejl.

Der returneres en tom tabel, hvis:

  • Den tilsvarende ydre værdi af en orderBy eller partitionBy kolonne findes ikke i relation.
  • Hele vinduet er uden for partitionen, eller starten af vinduet er efter dets afslutning.

Hvis WINDOW bruges i en beregnet kolonne, der er defineret i den samme tabel som relation, og orderBy udelades, returneres der en fejl.

Hvis starten af vinduet viser sig at være før den første række, angives den til den første række. Hvis slutningen af vinduet er efter den sidste række i partitionen, er den på samme måde angivet til den sidste række.

reset kan kun bruges i visuelle beregninger og kan ikke bruges sammen med orderBy eller partitionBy. Hvis reset findes, kan axis angives, men relation kan ikke.

Eksempel 1 – måling

Følgende måling:

DAX
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 det 3-dages gennemsnit af enhedspriser for hvert produkt. Bemærk, at 3-dages vinduet består af tre dage, hvor produktet har salg, ikke nødvendigvis tre kalenderdage i træk.

Eksempel 2 – måling

Følgende måling:

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

Returnerer den løbende sum for Samlet salg efter månedsnummer på år og genstarter for hvert regnskabsår:

År Månedsnummer på år Salgsbeløb RunningSum
FY2018 0 1.327.675 USD 1.327.675 USD
FY2018 2 3.936.463 USD 5.264.138 USD
FY2018 3 700.873 USD 5.965.011 USD
FY2018 4 1.519.275 USD 7.484.286 USD
FY2018 5 2.960.378 USD 10.444.664 USD
FY2018 6 1.487.671 USD 11.932.336 USD
FY2018 7 1.423.357 USD 13.355.693 USD
FY2018 8 2.057.902 USD 15.413.595 USD
FY2018 9 2.523.948 USD 17.937.543 USD
FY2018 10 561.681 USD 18.499.224 USD
FY2018 11 4.764.920 USD 23.264.145 USD
FY2018 12 596.747 USD 23.860.891 USD
FY2019 0 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
FY2020 0 3.235.187 USD 3.235.187 USD
FY2020 2 4.070.046 USD 7.305.233 USD
FY2020 3 4.429.833 USD 11.735.066 USD
FY2020 4 4.002.614 USD 15.737.680 USD
FY2020 5 5.265.797 USD 21.003.477 USD
FY2020 6 3.465.241 USD 24.468.717 USD
FY2020 7 3.513.064 USD 27.981.781 USD
FY2020 8 5.247.165 USD 33.228.947 USD
FY2020 9 5.104.088 USD 38.333.035 USD
FY2020 10 3.542.150 USD 41.875.184 USD
FY2020 11 5.151.897 USD 47.027.081 USD
FY2020 12 4.851.194 USD 51.878.275 USD

Eksempel 3 – visuel beregning

Følgende visualiseringsberegning DAX forespørgsel:

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

Returnerer det akkumulerede samlede salg pr. måned beregnet sammen med hvert år. Værdierne 1 og -2 kan bruges i stedet for HIGHESTPARENTmed de samme resultater.

Skærmbilledet nedenfor viser den visuelle matrix og det visuelle beregningsudtryk:

DAX visualiseringsberegning

Eksempel 4 – visuel beregning

Følgende visualiseringsberegning DAX forespørgsel:

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

Returnerer det akkumulerede samlede salg pr. måned beregnet for hvert kvartal.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM