WINDOW

Gäller för:Beräknad kolumnBeräknad tabellMåttVisuell beräkning

Returnerar flera rader som är placerade inom det angivna intervallet.

Syntax

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

Parametrar

Period Definition
from Anger var fönstret startar. Det kan vara valfritt DAX uttryck som returnerar ett skalärt värde.
Beteendet beror på parametern from_type:
– Om from_type är REL, antalet rader som ska gå tillbaka (negativt värde) eller framåt (positivt värde) från den aktuella raden för att få den första raden i fönstret.
– Om from_type är ABS, och from är positivt, är det positionen för början av fönstret från början av partitionen. Indexering är 1-baserad och 0 tolkas som 1. Till exempel betyder 0 och 1 att fönstret börjar från början av partitionen. Om from är negativt är det positionen för början av fönstret från slutet av partitionen. -1 innebär den sista raden i partitionen.
from_type Ändrar beteendet för parametern from. Möjliga värden är ABS (absolut) och REL (relativ). Standardvärdet är REL.
to Samma som from, men anger slutet av fönstret. Den sista raden ingår i fönstret.
to_type Samma som from_type, men ändrar beteendet för to.
relation (Valfritt) Ett tabelluttryck som utdataraderna returneras från. Om den används i visuella beräkningar accepterar den här parametern en axel i den visuella formen.
Om det anges måste alla kolumner i partitionBy komma från den eller en relaterad tabell.
Om det utelämnas:
– Du måste uttryckligen ange orderBy .
- Alla orderBy och partitionBy uttryck måste vara fullständigt kvalificerade kolumnnamn och komma från en enda tabell.
– Standardvärdet är ALLSELECTED() för alla kolumner i orderBy och partitionBy.
orderBy (Valfritt) En ORDERBY-sats () som innehåller de uttryck som definierar hur varje partition sorteras.
Om det utelämnas:
– Du måste uttryckligen ange relation .
– Standardinställningen är att sortera efter varje kolumn i relation som inte redan har angetts i partitionBy.
blanks (Valfritt) En uppräkning som definierar hur du hanterar tomma värden när du sorterar relation eller axis.
De värden som stöds är:
  • DEFAULT (standardvärdet), där beteendet för numeriska värden är att tomma värden sorteras mellan noll och negativa värden. Beteendet för strängar är att tomma värden sorteras före alla strängar, inklusive tomma strängar.
  • FIRST: blanksteg ordnas alltid i början, oavsett stigande eller fallande sorteringsordning.
  • LAST: tomma objekt sorteras alltid i slutet, oavsett stigande eller fallande sorteringsordning.

När du anger både parametern blanks och blankvärdena i ORDERBYfunktionen () för enskilda uttryck prioriteras blanks det aktuella orderBy-uttrycket i det enskilda orderBy-uttrycket. OrderBy-uttryck utan blanks att anges följer parametern blanks för den överordnade funktionen.
partitionBy (Valfritt) En PARTITIONBY() sats som innehåller de kolumner som definierar hur relation partitioneras. Om det utelämnas behandlas relation som en enda partition.
matchBy (Valfritt) En MATCHBY() sats som innehåller de kolumner som definierar hur du matchar data och identifierar den aktuella raden.
reset (Valfritt) Endast tillgängligt i visuella beräkningar. Anger om beräkningen återställs och på vilken nivå av den visuella formens kolumnhierarki. Godkända värden är: en fältreferens till en kolumn i den aktuella visuella formen, NONE (standard), LOWESTPARENT, HIGHESTPARENTeller ett heltal. Beteendet beror på heltalstecknet:
– Om noll eller utelämnas återställs inte beräkningen. Motsvarar NONE.
– Om det är positivt identifierar heltal kolumnen med början från den högsta, oberoende av korn. HIGHESTPARENT motsvarar 1.
– Om det är negativt identifierar heltal kolumnen med början från den lägsta, i förhållande till det aktuella kornet. LOWESTPARENT motsvarar -1.

Returvärde

Alla rader från fönstret.

Kommentarer

Förutom kolumner som läggs till av DAX tabellfunktioner måste varje kolumn i relation (när matchBy finns inte) eller varje kolumn i matchBy och partitionBy (när matchBy finns) ha ett motsvarande yttre värde för att definiera den aktuella raden som ska användas. Om from_type och to_type båda har värdet ABSgäller följande endast för kolumnerna partitionBy :

  • Om det finns exakt en motsvarande yttre kolumn används dess värde.
  • Om det inte finns någon motsvarande yttre kolumn:
    • WINDOW avgör först alla kolumner som inte har någon motsvarande yttre kolumn.
    • För varje kombination av befintliga värden för dessa kolumner i WINDOWden överordnade kontexten WINDOW utvärderas och motsvarande rader returneras.
    • WINDOWSlututdata är en union av dessa rader.
  • Om det finns fler än en motsvarande yttre kolumn returneras ett fel.

Om alla relationkolumner har lagts till av DAX tabellfunktioner returneras ett fel.

Om matchBy finns WINDOW försöker du använda matchBy kolumner och partitionBy för att identifiera raden. Om matchBy inte finns och de kolumner som anges i orderBy och partitionBy inte unikt kan identifiera varje rad i relation:

  • WINDOW försöker hitta det minsta antalet ytterligare kolumner som krävs för att unikt identifiera varje rad.
  • Om du hittar WINDOW sådana kolumner lägger du automatiskt till de nya kolumnerna i orderBy, och varje partition sorteras med den här nya uppsättningen orderBy-kolumner.
  • Om sådana kolumner inte kan hittas returneras ett fel.

En tom tabell returneras om:

  • Motsvarande yttre värde för en orderBy kolumn finns partitionBy inte i relation.
  • Hela fönstret ligger utanför partitionen, eller så är början av fönstret efter dess slut.

Om du använder WINDOW i en beräknad kolumn som definierats i samma tabell som relation, och orderBy utelämnas, returneras ett fel.

Om fönstrets början är före den första raden är det inställt på den första raden. På samma sätt, om slutet av fönstret är efter den sista raden i partitionen, är den inställd på den sista raden.

Du kan endast använda reset i visuella beräkningar och du kan inte använda det i kombination med orderBy eller partitionBy. Om reset finns kan du ange axis men inte relation.

Om värdet reset för är absolut (ett positivt heltal, HIGHESTPARENT, eller en fältreferens) och beräkningen utvärderas på eller över målnivån i hierarkin återställs beräkningen för varje enskilt element. Funktionen utvärderas alltså inom en partition som endast innehåller det specifika elementet.

Exempel i den här artikeln kan användas med exempelmodellen Adventure Works DW 2020 Power BI Desktop. Information om hur du hämtar modellen finns i DAX exempelmodell.

Exempel 1 – mått

Följande mått:

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

Returnerar 3-dagars genomsnitt för enhetspriser för varje produkt. 3-dagarsfönstret består av tre dagar då produkten hade försäljning, inte nödvändigtvis tre kalenderdagar i följd.

Exempel 2 – mått

Följande mått:

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

Returnerar den löpande summan för total försäljning per månadsnummer och startar om för varje räkenskapsår:

År Månadens antal år Försäljningsbelopp RunningSum
FY2018 1 $1,327,675 $1,327,675
FY2018 2 $3,936,463 $5,264,138
FY2018 3 $700,873 $5,965,011
FY2018 4 $1,519,275 $7,484,286
FY2018 5 $2,960,378 $10,444,664
FY2018 6 $1,487,671 $11,932,336
FY2018 7 $1,423,357 $13,355,693
FY2018 8 $2,057,902 $15,413,595
FY2018 9 $2,523,948 $17,937,543
FY2018 10 $561,681 $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 $2,092,434 $6,769,488
FY2019 4 $2,405,971 $9,175,459
FY2019 5 $3,459,444 $12,634,903
FY2019 6 $2,850,649 $15,485,552
FY2019 7 $2,939,691 $18,425,243
FY2019 8 $3,964,801 $22,390,045
FY2019 9 $3,287,606 $25,677,650
FY2019 10 $2,157,287 $27,834,938
FY2019 11 $3,611,092 $31,446,030
FY2019 12 $2,624,078 $34,070,109
FY2020 1 $3,235,187 $3,235,187
FY2020 2 $4,070,046 $7,305,233
FY2020 3 $4,429,833 $11,735,066
FY2020 4 $4,002,614 $15,737,680
FY2020 5 $5,265,797 $21,003,477
FY2020 6 $3,465,241 $24,468,717
FY2020 7 $3,513,064 $27,981,781
FY2020 8 $5,247,165 $33,228,947
FY2020 9 $5,104,088 $38,333,035
FY2020 10 $3,542,150 $41,875,184
FY2020 11 $5,151,897 $47,027,081
FY2020 12 $4,851,194 $51,878,275

Exempel 3 – visuell beräkning

Följande visuella beräkning DAX fråga:

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

Returnerar den kumulativa totala försäljningen per månad, beräknad längs varje år. Värdet 1 kan användas i stället för HIGHESTPARENT, med samma resultat.

Skärmbilden nedan visar den visuella matrisen och det visuella beräkningsuttrycket:

DAX visuell beräkning

Exempel 4 – visuell beräkning

Följande visuella beräkning DAX fråga:

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

Returnerar den ackumulerade totala försäljningen per månad, beräknad längs varje kvartal. Värdet LOWESTPARENT kan användas i stället för -1, med samma resultat.