WINDOW

Gilt für:Berechnete SpalteBerechnete TabelleMessenVisuelle Berechnung

Gibt mehrere Zeilen zurück, die innerhalb des angegebenen Intervalls positioniert sind.

Syntax

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

Parameter

Begriff Definition
from Gibt an, wo das Fenster beginnt. Dabei kann es sich um einen beliebigen DAX Ausdruck handeln, der einen skalaren Wert zurückgibt.
Das Verhalten hängt vom from_type-Parameter ab:
– Wenn from_type REL ist, wird die Anzahl der Zurück-Zeilen (negativer Wert) oder vorwärts (positiver Wert) aus der aktuellen Zeile abgerufen, um die erste Zeile im Fenster abzurufen.
- Wenn from_type dies der Wert ist und from positiv istABS, ist dies die Position des Anfangs des Fensters vom Anfang der Partition. Die Indizierung ist 1-basiert und 0 wird als 1 interpretiert. Beispielsweise bedeutet "0" und "1", dass das Fenster am Anfang der Partition beginnt. Wenn from dies negativ ist, ist dies die Position des Anfangs des Fensters vom Ende der Partition. -1 bedeutet die letzte Zeile in der Partition.
from_type Ändert das Verhalten des from-Parameters. Mögliche Werte sind ABS (absolut) und REL (relativ). Die Standardeinstellung lautet REL.
to Identisch mit from, gibt aber das Ende des Fensters an. Die letzte Zeile ist im Fenster enthalten.
to_type Identisch mit from_type, ändert aber das Verhalten von to.
relation (Optional) Ein Tabellenausdruck, über den die Ausgabezeilen zurückgegeben werden. Bei Verwendung in visuellen Berechnungen akzeptiert dieser Parameter eine Achse in der visuellen Form.
Wenn angegeben, müssen alle Spalten in partitionBy daraus oder einer verknüpften Tabelle stammen.
Wenn nicht angegeben:
- Sie müssen explizit angeben orderBy .
- Alle orderBy Ausdrücke partitionBy müssen vollqualifizierte Spaltennamen sein und aus einer einzigen Tabelle stammen.
– Standardmäßig werden alle Spalten in ALLSELECTED und orderBypartitionBy() angezeigt.
orderBy (Optional) Eine ORDERBY() Klausel mit den Ausdrücken, die definieren, wie jede Partition sortiert wird.
Wenn nicht angegeben:
- Sie müssen explizit angeben relation .
- Standardmäßig wird jede Spalte sortiert, in relation der noch nicht angegeben partitionByist.
blanks (Optional) Eine Aufzählung, die definiert, wie leere Werte beim Sortieren der relation oder axisbehandelt werden.
Die unterstützten Werte sind:
  • DEFAULT (Standardwert), wobei das Verhalten für numerische Werte darin besteht, dass leere Werte zwischen Null und negativen Werten sortiert werden. Das Verhalten für Zeichenfolgen besteht darin, dass leere Werte vor allen Zeichenfolgen sortiert werden, einschließlich leerer Zeichenfolgen.
  • FIRST: Leerzeichen werden immer am Anfang sortiert, unabhängig von aufsteigender oder absteigender Sortierreihenfolge.
  • LAST: Leerzeichen werden immer am Ende sortiert, unabhängig von aufsteigender oder absteigender Sortierreihenfolge.

Wenn Sie sowohl den blanks Parameter als auch die Leerzeichen in der ORDERBY() Funktion für einzelne Ausdrücke angeben, blanks hat der einzelne OrderBy-Ausdruck Vorrang für den relevanten orderBy-Ausdruck. OrderBy-Ausdrücke ohne blanks Angabe des blanks Parameters in der übergeordneten Funktion.
partitionBy (Optional) A PARTITIONBY() clause containing the columns that define how relation is partitioned. Wenn sie weggelassen wird, wird relation als einzelne Partition behandelt.
matchBy (Optional) A MATCHBY() clause containing the columns that define how to match data and identify the current row.
reset (Optional) Nur in visuellen Berechnungen verfügbar. Gibt an, ob die Berechnung zurückgesetzt wird und auf welcher Ebene der Spaltenhierarchie des visuellen Shapes. Akzeptierte Werte sind: ein Feldverweis auf eine Spalte in der aktuellen visuellen Form, NONE (Standard), LOWESTPARENT, HIGHESTPARENToder eine ganze Zahl. Das Verhalten hängt vom Ganzzahlzeichen ab:
- Wenn null oder weggelassen wird, wird die Berechnung nicht zurückgesetzt. Entspricht NONE.
- Wenn die ganze Zahl positiv ist, identifiziert die ganze Zahl die Spalte beginnend mit der höchsten, unabhängig von Korn. HIGHESTPARENT entspricht 1.
- Wenn negativ, identifiziert die ganze Zahl die Spalte beginnend mit dem niedrigsten, relativ zum aktuellen Korn. LOWESTPARENT entspricht -1.

Rückgabewert

Alle Zeilen aus dem Fenster.

Bemerkungen

Mit Ausnahme von Spalten, die von DAX Tabellenfunktionen hinzugefügt werden, muss jede Spalte in relation (wenn matchBy nicht vorhanden) oder jede Spalte in matchBy und partitionBy (wenn matchBy vorhanden) einen entsprechenden äußeren Wert aufweisen, um die aktuelle Zeile zu definieren, für die sie ausgeführt werden soll. Wenn from_type und to_type beide Werte ABSaufweisen, gilt Folgendes nur für die partitionBy Spalten:

  • Wenn genau eine entsprechende äußere Spalte vorhanden ist, wird der Wert verwendet.
  • Wenn keine entsprechende äußere Spalte vorhanden ist:
    • WINDOW bestimmt zuerst alle Spalten, die keine entsprechende äußere Spalte aufweisen.
    • Für jede Kombination vorhandener Werte für diese Spalten im WINDOWübergeordneten Kontext WINDOW wird ausgewertet, und die entsprechenden Zeilen werden zurückgegeben.
    • WINDOWDie endgültige Ausgabe ist eine Vereinigung dieser Zeilen.
  • Wenn mehr als eine entsprechende äußere Spalte vorhanden ist, wird ein Fehler zurückgegeben.

Wenn alle relationSpalten von DAX Tabellenfunktionen hinzugefügt wurden, wird ein Fehler zurückgegeben.

Wenn matchBy vorhanden, versucht, die Zeile zu identifizierenmatchBy, WINDOW und partitionBy Spalten. Wenn matchBy nicht vorhanden und die darin orderBy angegebenen Spalten nicht vorhanden sind und partitionBy nicht eindeutig jede Zeile in relation:

  • WINDOW versucht, die geringste Anzahl zusätzlicher Spalten zu finden, die erforderlich sind, um jede Zeile eindeutig zu identifizieren.
  • Wenn solche Spalten gefunden werden können, WINDOW werden diese neuen Spalten orderByautomatisch angefügt, und jede Partition wird mithilfe dieser neuen Gruppe von orderBy-Spalten sortiert.
  • Wenn solche Spalten nicht gefunden werden können, wird ein Fehler zurückgegeben.

Eine leere Tabelle wird zurückgegeben, wenn:

  • Der entsprechende äußere Wert einer orderBy oder partitionBy Spalte ist nicht vorhanden relation.
  • Das gesamte Fenster befindet sich außerhalb der Partition, oder der Anfang des Fensters liegt nach dem Ende.

Wenn Sie in einer berechneten Spalte, WINDOW die in derselben Tabelle definiert ist wie relation, und orderBy ausgelassen wird, wird ein Fehler zurückgegeben.

Wenn sich der Anfang des Fensters vor der ersten Zeile befindet, wird es auf die erste Zeile festgelegt. Entsprechend wird das Ende des Fensters nach der letzten Zeile der Partition auf die letzte Zeile festgelegt.

Sie können nur in visuellen Berechnungen verwendet reset werden, und Sie können sie nicht in Kombination mit orderBy oder partitionBy. Wenn reset vorhanden, können Sie angeben axis , aber nicht relation.

Wenn der Wert absolut reset (eine positive ganze Zahl HIGHESTPARENToder ein Feldbezug) ist und die Berechnung auf oder über der Zielebene in der Hierarchie ausgewertet wird, wird die Berechnung für jedes einzelne Element zurückgesetzt. Das heißt, die Funktion wird innerhalb einer Partition ausgewertet, die nur dieses bestimmte Element enthält.

Beispiele in diesem Artikel können mit dem Beispielmodell Adventure Works DW 2020 Power BI Desktop verwendet werden. Informationen zum Abrufen des Modells finden Sie unter DAX Beispielmodell.

Beispiel 1 – Maß

Die folgende Maßnahme:

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

Gibt den 3-Tage-Durchschnitt der Einzelpreise für jedes Produkt zurück. Das 3-Tage-Fenster besteht aus drei Tagen, an denen das Produkt verkäufe hatte, nicht unbedingt drei aufeinander folgende Kalendertage.

Beispiel 2 – Maß

Die folgende Maßnahme:

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

Gibt die laufende Summe für den Gesamtumsatz nach Monatszahl des Jahres zurück, die für jedes Geschäftsjahr neu gestartet wird:

Jahr Monatsnummer des Jahres Verkaufsbetrag RunningSum
GJ2018 1 1.327.675 USD 1.327.675 USD
GJ2018 2 3.936.463 USD 5.264.138 USD
GJ2018 3 700.873 USD 5.965.011 USD
GJ2018 4 1.519.275 USD 7.484.286 USD
GJ2018 5 2.960.378 USD 10.444.664 USD
GJ2018 6 1.487.671 USD 11.932.336 USD
GJ2018 7 1.423.357 USD 13.355.693 USD
GJ2018 8 2.057.902 USD 15.413.595 USD
GJ2018 9 2.523.948 USD 17.937.543 USD
GJ2018 10 561.681 USD 18.499.224 USD
GJ2018 11 4.764.920 USD 23.264.145 USD
GJ2018 12 596.747 USD 23.860.891 USD
GJ2019 1 1.847.692 USD 1.847.692 USD
GJ2019 2 2.829.362 USD 4.677.054 USD
GJ2019 3 2.092.434 USD 6.769.488 USD
GJ2019 4 2.405.971 USD 9.175.459 USD
GJ2019 5 3.459.444 USD 12.634.903 USD
GJ2019 6 2.850.649 USD 15.485.552 USD
GJ2019 7 2.939.691 USD 18.425.243 USD
GJ2019 8 3.964.801 USD 22.390.045 USD
GJ2019 9 3.287.606 USD 25.677.650 USD
GJ2019 10 2.157.287 USD 27.834.938 USD
GJ2019 11 3.611.092 USD 31.446.030 USD
GJ2019 12 2.624.078 USD 34.070.109 USD
GJ2020 1 3.235.187 USD 3.235.187 USD
GJ2020 2 4.070.046 USD 7.305.233 USD
GJ2020 3 4.429.833 USD 11.735.066 USD
GJ2020 4 4.002.614 USD 15.737.680 USD
GJ2020 5 5.265.797 USD 21.003.477 USD
GJ2020 6 3.465.241 USD 24.468.717 USD
GJ2020 7 3.513.064 USD 27.981.781 USD
GJ2020 8 5.247.165 USD 33.228.947 USD
GJ2020 9 5.104.088 USD 38.333.035 USD
GJ2020 10 3.542.150 USD 41.875.184 USD
GJ2020 11 5.151.897 USD 47.027.081 USD
GJ2020 12 4.851.194 USD 51.878.275 USD

Beispiel 3 – visuelle Berechnung

Die folgende visuelle Berechnung DAX Abfrage:

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

Gibt den kumulierten Gesamtumsatz nach Monat zurück, der pro Jahr berechnet wird. Der Wert 1 kann anstelle von HIGHESTPARENT, mit demselben Ergebnis verwendet werden.

Der folgende Screenshot zeigt die visuelle Matrix und den Ausdruck der visuellen Berechnung:

DAX Visuelle Berechnung

Beispiel 4 – visuelle Berechnung

Die folgende visuelle Berechnung DAX Abfrage:

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

Gibt den kumulierten Gesamtumsatz nach Monat zurück, der für jedes Quartal berechnet wird. Der Wert LOWESTPARENT kann anstelle von -1 mit demselben Ergebnis verwendet werden.