WINDOW
s’applique à :colonne calculéetable calculéeMeasurecalcul visuel
Retourne plusieurs lignes qui sont positionnées dans l’intervalle donné.
Syntaxe
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Paramètres
Terme | Définition |
---|---|
from |
Indique l’emplacement de démarrage du window. Il peut s’agir de n’importe quelle expression DAX qui retourne une valuescalaire.
Le comportement dépend du paramètre from_type : - If from_type est REL, le nombre de lignes à revenir en arrière (valuenégatives) or avant (positif value) de la ligne actuelle pour obtenir la ligne first dans le window.
- If from_type est ABS, andfrom est positif, puis il s’agit de la position du début du window à partir du début de la partition. L’indexation commence à 1. Par exemple, 1 signifie que window commence à partir du début de la partition.
If
from est négative, il s’agit de la position du début de la window à partir de la fin de la partition. -1 signifie la ligne last dans la partition. |
from_type |
Modifie le comportement du paramètre from . Les values possibles sont ABS (absolu) and REL (relatif). La valeur par défaut est REL. |
to |
Identique à from , mais indique la fin du window. La ligne last est incluse dans la window. |
to_type |
Identique à from_type , mais modifie le comportement de to . |
relation |
(Facultatif) Expression de table à partir de laquelle les lignes de sortie sont retournées.
If spécifié, all colonnes dans partitionBy doivent provenir de celui-ci or une table related.
If omis : - orderBy doit être spécifié explicitement.: les expressions All orderBy andpartitionBy doivent être des noms de colonnes complets and proviennent d’une table unique.
: valeur par défaut ALLSELECTED() des colonnes all dans orderBy andpartitionBy . |
axis |
(Facultatif) Axe de la forme du visuel. Disponible uniquement dans les calculs visuels, and remplace relation . |
orderBy |
(Facultatif) Clause ORDERBY() contenant les expressions qui define comment chaque partition est triée.
If omis : - relation doit être spécifié explicitement.
: tri par défaut par chaque colonne dans relation qui est not déjà spécifiée dans partitionBy . |
blanks |
(Facultatif) Énumération qui définit comment gérer blankvalues lors du tri.
Ce paramètre est réservé à un usage futur. Actuellement, la seule value prise en charge est DEFAULT , où le comportement de values numérique est blankvalues sont classés entre zéro andvaluesnégatif . Le comportement des chaînes est blankvalues sont classés avant all chaînes, y compris les chaînes vides. |
partitionBy |
(Facultatif) Clause PARTITIONBY() contenant les colonnes qui define comment relation est partitionnée.
If omis, relation est traitée comme une partition unique. |
matchBy |
(Facultatif) Clause MATCHBY() contenant les colonnes qui define comment faire correspondre les données and identifier la ligne actuelle. |
reset |
(Facultatif) Disponible seulement dans les calculs de visuel. Indique if les réinitialisations de calcul, and à quel niveau de la hiérarchie de colonnes de la forme visuelle. Les values acceptés sont les suivants : NONE , LOWESTPARENT , HIGHESTPARENT , or un entier. Le comportement dépend de l’entier sign: - If zéro or omis, le calcul ne réinitialise not. Équivalent à NONE .
- If positif, l’entier identifie la colonne à partir du grain le plus élevé, indépendamment du grain. HIGHESTPARENT équivaut à 1.
- If négatif, l’entier identifie la colonne à partir du plus bas, par rapport au grain actuel. LOWESTPARENT équivaut à -1. |
Retourner value
All lignes du window.
Notes
Except pour les colonnes ajoutées par DAX fonctions de table, chaque colonne de relation
, lorsque matchBy
est not présente, or chaque colonne dans matchBy
andpartitionBy
, lorsque matchBy
est présente, doit avoir un value externe correspondant pour aider à define la ligne actuelle sur laquelle fonctionner.
If
from_type
and
to_type
les deux ont valueABS, les éléments suivants s’appliquent uniquement aux colonnes partitionBy
:
- If il existe exactement une colonne externe correspondante, son value est utilisé.
-
If il n’existe aucune colonne externe correspondante :
- WINDOW détermine first déterminer all colonnes qui n’ont aucune colonne externe correspondante.
- Pour chaque combinaison de values existantes pour ces colonnes dans le contexte parent de WINDOW, WINDOW est évaluée, and les lignes correspondantes sont retournées.
- WINDOW sortie finale est une union de ces lignes.
- If il existe plusieurs colonnes externes correspondantes, une error est retournée.
If
all des colonnes de relation
ont été ajoutées par DAX fonctions de table, une error est retournée.
If
matchBy
est présente, WINDOW essaie d’utiliser des colonnes matchBy
andpartitionBy
pour identifier la ligne.
If
matchBy
est not présente and les colonnes spécifiées dans orderBy
andpartitionBy
ne peuvent pas identifier de manière unique chaque ligne dans relation
, puis :
- WINDOW tenterez de find le moins de colonnes supplémentaires requises pour identifier de manière unique chaque ligne.
-
If de telles colonnes sont disponibles, WINDOW ajoute automatiquement ces nouvelles colonnes à
orderBy
, and chaque partition est triée à l’aide de ce nouvel ensemble de colonnes orderBy. - If de telles colonnes sont introuvables, une error est retournée.
Une table vide est retournée if:
- Le value externe correspondant d’une colonne
orderBy
orpartitionBy
n’existe not dansrelation
. - La window entière est en dehors de la partition, or le début de la window est après sa fin.
If
WINDOW est utilisé dans une colonne calculée définie sur la même table que relation
, andorderBy
est omis, un error est retourné.
If le début de la window s’avère avant la ligne first, puis elle est définie sur la ligne first. De même, if la fin de l'window se trouve après la ligne last de la partition, elle est définie sur la ligne last.
reset
peuvent être utilisés uniquement dans les calculs visuels, and ne peuvent pas être utilisés en combinaison avec orderBy
orpartitionBy
.
If
reset
est présente, axis
peut être spécifiée, mais relation
ne peut pas.
Exemple 1 - measure
Les measuresuivantes :
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]))
)
Retourne les 3-dayaverage des prix unitaires pour chaque product. Notez que les 3-daywindow se composent de trois jours dans lesquels le product a des ventes, not nécessairement trois jours consécutifs calendar jours.
Exemple 2 - measure
Les measuresuivantes :
RunningSum =
SUMX (
WINDOW (
1, ABS, 0, REL,
ALLSELECTED (
'Date'[Fiscal Year],
'Date'[Month Number Of Year]
),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Retourne le sum en cours d’exécution pour Total Sales by Month Number Of Year, en redémarrant pour chaque Yearfiscal :
Year | Month nombre de Year | Sales Amount | RunningSum |
---|---|---|---|
EF2018 | 1 | 1 327 675 $ | 1 327 675 $ |
EF2018 | 2 | 3 936 463 $ | 5 264 138 $ |
EF2018 | 3 | 700 873 $ | 5 965 011 $ |
EF2018 | 4 | 1 519 275 $ | 7 484 286 $ |
EF2018 | 5 | 2 960 378 $ | 10 444 664 $ |
EF2018 | 6 | 1 487 671 $ | 11 932 336 $ |
EF2018 | 7 | 1 423 357 $ | 13 355 693 $ |
EF2018 | 8 | 2 057 902 $ | 15 413 595 $ |
EF2018 | 9 | 2 523 948 $ | 17 937 543 $ |
EF2018 | 10 | 561 681 $ | 18 499 224 $ |
EF2018 | 11 | 4 764 920 $ | 23 264 145 $ |
EF2018 | 12 | 596 747 $ | 23 860 891 $ |
EF2019 | 1 | 1 847 692 $ | 1 847 692 $ |
EF2019 | 2 | 2 829 362 $ | 4 677 054 $ |
EF2019 | 3 | 2 092 434 $ | 6 769 488 $ |
EF2019 | 4 | 2 405 971 $ | 9 175 459 $ |
EF2019 | 5 | 3 459 444 $ | 12 634 903 $ |
EF2019 | 6 | 2 850 649 $ | 15 485 552 $ |
EF2019 | 7 | 2 939 691 $ | 18 425 243 $ |
EF2019 | 8 | 3 964 801 $ | 22 390 045 $ |
EF2019 | 9 | 3 287 606 $ | 25 677 650 $ |
EF2019 | 10 | 2 157 287 $ | 27 834 938 $ |
EF2019 | 11 | 3 611 092 $ | 31 446 030 $ |
EF2019 | 12 | 2 624 078 $ | 34 070 109 $ |
EF2020 | 1 | 3 235 187 $ | 3 235 187 $ |
EF2020 | 2 | 4 070 046 $ | 7 305 233 $ |
EF2020 | 3 | 4 429 833 $ | 11 735 066 $ |
EF2020 | 4 | 4 002 614 $ | 15 737 680 $ |
EF2020 | 5 | 5 265 797 $ | 21 003 477 $ |
EF2020 | 6 | 3 465 241 $ | 24 468 717 $ |
EF2020 | 7 | 3 513 064 $ | 27 981 781 $ |
EF2020 | 8 | 5 247 165 $ | 33 228 947 $ |
EF2020 | 9 | 5 104 088 $ | 38 333 035 $ |
EF2020 | 10 | 3 542 150 $ | 41 875 184 $ |
EF2020 | 11 | 5 151 897 $ | 47 027 081 $ |
EF2020 | 12 | 4 851 194 $ | 51 878 275 $ |
Exemple 3 : calcul de visuel
Le calcul visuel suivant DAX requête :
TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])
Retourne le total cumulé des ventes par month, calculé le long de chaque year. Les values 1 and -2 peuvent être utilisées au lieu de HIGHESTPARENT
, avec les mêmes résultats.
La capture d’écran ci-dessous montre la matrice visuelle and l’expression de calcul visuel :
de calcul visuel
Exemple 4 : calcul de visuel
Le calcul visuel suivant DAX requête :
TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])
Retourne le total cumulé des ventes par month, calculé le long de chaque quarter.
contenu Related
INDEX
MOVINGAVERAGE
OFFSET
ORDERBY
PARTITIONBY
RANGE
RANK
ROWNUMBER
RUNNINGSUM