Delen via


WINDOW

Van toepassing op:berekende kolomberekende tabelMeasureVisuele berekening

Retourneert meerdere rijen die binnen het opgegeven interval zijn geplaatst.

Syntaxis

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

Parameters

Term Definitie
from Geeft aan waar de window begint. Dit kan elke DAX expressie zijn die een scalaire valueretourneert.
Het gedrag is afhankelijk van de parameter from_type:
- Iffrom_type is REL, het aantal rijen dat moet worden teruggegaan (negatief value) or vooruit (positief value) uit de huidige rij om de first rij in de windowop te halen.
- Iffrom_type is ABS, andfrom positief is, is het de positie van het begin van de window vanaf het begin van de partitie. Indexering is gebaseerd op 1. 1 betekent bijvoorbeeld dat window begint vanaf het begin van de partitie. If from negatief is, is het de positie van het begin van de window vanaf het einde van de partitie. -1 betekent de last rij in de partitie.
from_type Wijzigt het gedrag van de parameter from. Mogelijke values zijn ABS (absolute) and REL (relatief). De standaardwaarde is REL.
to Hetzelfde als from, maar geeft het einde van de windowaan. De rij last is opgenomen in de window.
to_type Hetzelfde als from_type, maar wijzigt het gedrag van to.
relation (Optioneel) Een tabelexpressie waaruit de uitvoerrijen worden geretourneerd.
If opgegeven, moeten all kolommen in partitionBy afkomstig zijn or een related tabel.
If weggelaten:
- orderBy moet expliciet worden opgegeven.
: AllorderByandpartitionBy expressies moeten volledig gekwalificeerde kolomnamen zijn and afkomstig zijn van één tabel.
: standaard ingesteld op ALLSELECTED() van all kolommen in orderByandpartitionBy.
axis (Optioneel) Een as in de visuele shape. Alleen beschikbaar in visuele berekeningen, and vervangt relation.
orderBy (Optioneel) Een ORDERBY() component met de expressies die define hoe elke partitie wordt gesorteerd.
If weggelaten:
- relation moet expliciet worden opgegeven.
: standaard wordt elke kolom in relation gerangschikt die not al is opgegeven in partitionBy.
blanks (Optioneel) Een opsomming die definieert hoe blankvalues moet worden verwerkt bij het sorteren.
Deze parameter is gereserveerd voor toekomstig gebruik.
Momenteel wordt de enige ondersteunde valueDEFAULT, waarbij het gedrag voor numerieke values wordt blankvalues geordend tussen nul and negatieve values. Het gedrag voor tekenreeksen wordt blankvalues worden geordend voordat all tekenreeksen, inclusief lege tekenreeksen.
partitionBy (Optioneel) Een PARTITIONBY() component met de kolommen die define hoe relation wordt gepartitioneerd. If weggelaten, wordt relation behandeld als één partitie.
matchBy (Optioneel) Een MATCHBY() component met de kolommen die define hoe gegevens overeenkomen and de huidige rij identificeren.
reset (Optioneel) Alleen beschikbaar in visuele berekeningen. Hiermee wordt aangegeven if de berekening opnieuw wordt ingesteld and op welk niveau van de kolomhiërarchie van de visualshape. Geaccepteerde values zijn: een veldreferentie naar een kolom in de huidige visuele shape, NONE (standaard), LOWESTPARENT, HIGHESTPARENT, or een geheel getal. Het gedrag is afhankelijk van het gehele getal sign:
- If nul or weggelaten, wordt de berekening not opnieuw ingesteld. Gelijk aan NONE.
- If positief, identificeert het gehele getal de kolom die begint vanaf het hoogste, onafhankelijk van graan. HIGHESTPARENT is gelijk aan 1.
- If negatief, identificeert het gehele getal de kolom die begint vanaf het laagste getal ten opzichte van de huidige korrel. LOWESTPARENT is gelijk aan -1.

value retourneren

All rijen uit de window.

Opmerkingen

Except voor kolommen die zijn toegevoegd door DAX tabelfuncties, moet elke kolom in relation, wanneer matchBy aanwezig not is, elke kolom in ormatchByandpartitionBy , wanneer matchBy aanwezig is, een overeenkomstig buitenste value hebben om de huidige rij waarop moet worden uitgevoerd te define. If from_type and to_type beide valueABShebben, is het volgende alleen van toepassing op de kolommen partitionBy:

  • If er precies één overeenkomstige buitenkolom is, wordt de value gebruikt.
  • If er geen corresponderende buitenste kolom is:
    • WINDOW bepaalt firstall kolommen zonder bijbehorende buitenste kolom.
    • Voor elke combinatie van bestaande values voor deze kolommen in de bovenliggende context van WINDOWwordt WINDOW geëvalueerd and de bijbehorende rijen worden geretourneerd.
    • WINDOW uiteindelijke uitvoer is een union van deze rijen.
  • If er meer dan één corresponderende buitenkolom is, wordt een error geretourneerd.

If all kolommen van relationzijn toegevoegd door DAX tabelfuncties, wordt een error geretourneerd.

If matchBy aanwezig is, probeert WINDOWmatchByandpartitionBy kolommen te gebruiken om de rij te identificeren. If matchBy not aanwezig is and de kolommen die zijn opgegeven in orderByandpartitionBy niet elke rij in relationkunnen identificeren, en vervolgens:

  • WINDOW probeert het minste aantal extra kolommen te find dat nodig is om elke rij uniek te identificeren.
  • If dergelijke kolommen kunnen worden gevonden, voegt WINDOW deze nieuwe kolommen automatisch toe aan orderBy, and elke partitie wordt gesorteerd met behulp van deze nieuwe set orderBy kolommen.
  • If dergelijke kolommen niet kunnen worden gevonden, wordt een error geretourneerd.

Er wordt een lege tabel geretourneerd if:

  • De overeenkomstige buitenste value van een orderByorpartitionBy kolom bestaat not binnen relation.
  • De hele window valt buiten de partitie, or het begin van de window is na het einde.

If WINDOW wordt gebruikt in een berekende kolom die is gedefinieerd in dezelfde tabel als relation, wordt andorderBy weggelaten, wordt een error geretourneerd.

If het begin van de window vóór de rij first valt, wordt deze ingesteld op de first rij. Op dezelfde manier wordt if het einde van de window na de last rij van de partitie ingesteld op de last rij.

reset kan alleen worden gebruikt in visuele berekeningen, and kan niet worden gebruikt in combinatie met orderByorpartitionBy. If reset aanwezig is, kan axis worden opgegeven, maar relation niet.

Voorbeeld 1: measure

De volgende measure:

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

Retourneert de drie-dayaverage van eenheidsprijzen voor elke product. Let op de 3-daywindow bestaat uit drie dagen waarin de product verkoop heeft, not noodzakelijkerwijs drie opeenvolgende calendar dagen.

Voorbeeld 2: measure

De volgende measure:

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

Retourneert de actieve sum voor de totale verkoop per Month aantal Year, opnieuw opstarten voor elke fiscale Year:

Year Month aantal Year Verkoophoeveelheid 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

Voorbeeld 3: visuele berekening

De volgende visuele berekening DAX query:

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

Geeft als resultaat de cumulatieve totale verkoop per month, berekend langs elke year. De values 1 and -2 kan worden gebruikt in plaats van HIGHESTPARENT, met dezelfde resultaten.

In de onderstaande schermopname ziet u de visualmatrix and de visuele berekeningsexpressie:

DAX visuele berekening

Voorbeeld 4: visuele berekening

De volgende visuele berekening DAX query:

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

Geeft als resultaat de cumulatieve totale verkoop per month, berekend langs elke quarter.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM