WINDOW
Gilt für:Berechnete Spalte
Berechnete Tabelle
Measure
visuelle Berechnung
Gibt mehrere Zeilen zurück, die sich innerhalb des angegebenen Intervalls befinden.
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 ABSist und from positiv ist, ist es 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 negativ ist, ist es 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.
Wenn angegeben, müssen alle Spalten in partitionBy daraus oder einer verknüpften Tabelle stammen.
Wenn nicht angegeben: - orderBy muss explizit angegeben werden.– Alle orderBy - und partitionBy Ausdrücke müssen vollqualifizierte Spaltennamen sein und aus einer einzelnen Tabelle stammen.
– Standardmäßig werden alle Spalten in orderBy und partitionBy ALLSELECTED() angezeigt. |
axis |
(Optional) Eine Achse in der visuellen Form. Nur in visuellen Berechnungen verfügbar und ersetzt relation . |
orderBy |
(Optional) Eine ORDERBY() Klausel mit den Ausdrücken, die definieren, wie jede Partition sortiert wird.
Wenn nicht angegeben: - relation muss explizit angegeben werden.
– Standardmäßig wird jede Spalte in relation sortiert, die nicht bereits in partitionBy angegeben ist. |
blanks |
(Optional) Eine Aufzählung, die definiert, wie leere Werte beim Sortieren der relation oder axis behandelt werden.
Die unterstützten Werte sind:
Note, when the blanks parameter and blanks in the ORDERBY() () function on individual expressions are both specified, blanks on individual orderBy expression takes priority for the relevant orderBy expression, and orderBy expressions without blanks being specified will honor the blanks parameter on the parent function. |
partitionBy |
(Optional) Eine PARTITIONBY() Klausel, die die Spalten enthält, die definieren, wie relation partitioniert wird. Wenn sie weggelassen wird, wird relation als einzelne Partition behandelt. |
matchBy |
(Optional) Eine MATCHBY() Klausel mit den Spalten, die definieren, wie Daten übereinstimmen und die aktuelle Zeile identifiziert werden. |
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 , HIGHESTPARENT oder eine ganze Zahl. Das Verhalten hängt vom ganzzahligen Vorzeichen ab: – Wenn null oder ausgelassen 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 ist, oder jede Spalte in matchBy
und partitionBy
, wenn matchBy
vorhanden ist, über einen entsprechenden äußeren Wert verfügen, um die aktuelle Zeile zu definieren, für die sie ausgeführt werden soll. Wenn from_type
und to_type
beide werte ABShaben, 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 übergeordneten Kontext WINDOWwird WINDOW ausgewertet, und die entsprechenden Zeilen werden zurückgegeben.
- WINDOW 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 relation
Spalten von DAX Tabellenfunktionen hinzugefügt wurden, wird ein Fehler zurückgegeben.
Wenn matchBy
vorhanden ist, versucht WINDOW, matchBy
und partitionBy
Spalten zu verwenden, um die Zeile zu identifizieren.
Wenn matchBy
nicht vorhanden ist und die spalten, die in orderBy
angegeben sind und partitionBy
nicht jede Zeile in relation
eindeutig identifizieren können, dann:
- WINDOW versuchen, die geringste Anzahl zusätzlicher Spalten zu finden, die erforderlich sind, um jede Zeile eindeutig zu identifizieren.
- Wenn solche Spalten gefunden werden können, fügt WINDOW diese neuen Spalten automatisch an
orderBy
an, und jede Partition wird mithilfe dieser neuen Reihe 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
- oderpartitionBy
Spalte ist inrelation
nicht vorhanden. - Das gesamte Fenster befindet sich außerhalb der Partition, oder der Anfang des Fensters liegt nach dem Ende.
Wenn WINDOW in einer berechneten Spalte verwendet wird, die in derselben Tabelle wie relation
definiert ist und orderBy
weggelassen wird, wird ein Fehler zurückgegeben.
Wenn sich der Anfang des Fensters vor der ersten Zeile herausstellt, wird sie auf die erste Zeile festgelegt. Wenn sich das Ende des Fensters nach der letzten Zeile der Partition befindet, wird sie auf die letzte Zeile festgelegt.
reset
kann nur in visuellen Berechnungen verwendet werden und kann nicht in Kombination mit orderBy
oder partitionBy
verwendet werden. Wenn reset
vorhanden ist, können axis
angegeben werden, aber relation
nicht.
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. Beachten Sie, dass das 3-Tage-Fenster aus drei Tagen besteht, in denen das Produkt Verkäufe hat, 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 | Sales Amount | 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. Die Werte 1 und -2 können anstelle von HIGHESTPARENT
mit denselben Ergebnissen verwendet werden.
Der folgende Screenshot zeigt die visuelle Matrix und den Ausdruck der visuellen 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.
Verwandte Inhalte
INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM