Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Colonne
calculéeTable
calculéeMesurer
Calcul visuel
Retourne plusieurs lignes 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 de la fenêtre. Il peut s’agir de n’importe quelle expression DAX qui retourne une valeur scalaire.
Le comportement dépend du paramètre from_type : : si from_type est REL, le nombre de lignes à retourner (valeur négative) ou transférer (valeur positive) à partir de la ligne actuelle pour obtenir la première ligne de la fenêtre.
- Si from_type c’est ABS, et from est positif, il s’agit de la position du début de la fenêtre à partir du début de la partition. L’indexation est basée sur 1 et 0 est interprétée comme 1. Par exemple, 0 et 1 signifient que la fenêtre commence à partir du début de la partition. Si from elle est négative, il s’agit de la position du début de la fenêtre à partir de la fin de la partition. -1 signifie la dernière ligne de la partition. |
from_type |
Modifie le comportement du paramètre from. Les valeurs possibles sont ABS (absolue) et REL (relative). La valeur par défaut est REL. |
to |
Identique à from, mais indique la fin de la fenêtre. La dernière ligne est incluse dans la fenêtre. |
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. S’il est utilisé dans les calculs visuels, ce paramètre accepte un axe dans la forme visuelle.
Si spécifiée, toutes les colonnes de partitionBy doivent provenir de celle-ci ou d’une table associée.
En cas d’omission : - Vous devez spécifier orderBy explicitement.- Toutes et partitionBy expressions orderBy doivent être des noms de colonnes complets et proviennent d’une table unique.
: valeur par défaut ALLSELECTED() de toutes les colonnes dans orderBy et partitionBy. |
orderBy |
(Facultatif) Clause ORDERBY() contenant les expressions qui définissent la façon dont chaque partition est triée.
En cas d’omission : - Vous devez spécifier relation explicitement.
- La valeur par défaut est de classer par chaque colonne dans relation ce qui n’est pas déjà spécifié dans partitionBy. |
blanks |
(Facultatif) Énumération qui définit comment gérer les valeurs vides lors du tri de l'relation ou axis.
Les valeurs prises en charge sont les suivantes :
Lorsque vous spécifiez à la fois le blanks paramètre et les espaces dans la ORDERBYfonction () sur des expressions individuelles, blanks l’expression orderBy individuelle est prioritaire pour l’expression orderBy appropriée. Les expressions OrderBy sans blanks être spécifiées respectent le blanks paramètre sur la fonction parente. |
partitionBy |
(Facultatif) Clause PARTITIONBY() contenant les colonnes qui définissent comment relation est partitionnée. En cas d’omission, relation est traité comme une partition unique. |
matchBy |
(Facultatif) Clause MATCHBY() contenant les colonnes qui définissent comment faire correspondre les données et identifier la ligne actuelle. |
reset |
(Facultatif) Disponible seulement dans les calculs de visuel. Indique si le calcul est réinitialisé et au niveau de la hiérarchie des colonnes de la forme visuelle. Les valeurs acceptées sont : une référence de champ à une colonne dans la forme visuelle actuelle, NONE (valeur par défaut), LOWESTPARENT, HIGHESTPARENTou un entier. Le comportement dépend du signe entier : - Si zéro ou omis, le calcul ne se réinitialise pas. Équivalent à NONE.
- Si positif, l’entier identifie la colonne à partir du plus haut, indépendamment du grain. HIGHESTPARENT équivaut à 1.
- Si négatif, l’entier identifie la colonne à partir de la plus basse, par rapport au grain actuel. LOWESTPARENT équivaut à -1. |
Valeur de retour
Toutes les lignes de la fenêtre.
Notes
À l’exception des colonnes ajoutées par DAX les fonctions de table, chaque colonne dans relation (lorsqu’elle matchBy n’est pas présente) ou chaque colonne dans matchBy et partitionBy (lorsqu’elle matchBy est présente) doit avoir une valeur externe correspondante pour vous aider à définir la ligne actuelle sur laquelle fonctionner. Si from_type et to_type les deux ont une valeur ABS, ce qui suit s’applique uniquement aux partitionBy colonnes :
- Si une colonne externe correspondante existe exactement, sa valeur est utilisée.
- Si aucune colonne externe correspondante n’existe :
- WINDOW détermine d’abord toutes les colonnes qui n’ont aucune colonne externe correspondante.
- Pour chaque combinaison de valeurs existantes pour ces colonnes dans le WINDOWcontexte parent, WINDOW est évaluée et les lignes correspondantes sont retournées.
- WINDOWla sortie finale est une union de ces lignes.
- Si plusieurs colonnes externes correspondantes existent, une erreur est retournée.
Si toutes les colonnes de relationont été ajoutées par DAX fonctions de table, une erreur est retournée.
S’il matchBy est présent, WINDOW tente d’utiliser matchBy et partitionBy de colonnes pour identifier la ligne.
S’il matchBy n’est pas présent et que les colonnes spécifiées dans orderBy et partitionBy ne peuvent pas identifier de manière unique chaque ligne dans relation:
- WINDOW tente de trouver le moins de colonnes supplémentaires requises pour identifier de manière unique chaque ligne.
- Si de telles colonnes sont disponibles, WINDOW ajoute automatiquement ces nouvelles colonnes
orderByet chaque partition est triée à l’aide de ce nouvel ensemble de colonnes orderBy. - Si de telles colonnes ne sont pas trouvées, une erreur est retournée.
Une table vide est retournée si :
- La valeur externe correspondante d’une ou d’une
orderBycolonne n’existe pas dansrelation.partitionBy - La fenêtre entière se trouve en dehors de la partition, ou le début de la fenêtre se trouve après sa fin.
Si vous utilisez WINDOW dans une colonne calculée définie sur la même table que relation, et orderBy que vous ne l’avez pas omis, une erreur est retournée.
Si le début de la fenêtre est avant la première ligne, il est défini sur la première ligne. De même, si la fin de la fenêtre se trouve après la dernière ligne de la partition, elle est définie sur la dernière ligne.
Vous ne pouvez utiliser reset que dans les calculs visuels, et vous ne pouvez pas l’utiliser en combinaison avec orderBy ou partitionBy. Si reset elle est présente, vous pouvez spécifier axis , mais pas relation.
Si la valeur est reset absolue (un entier positif, HIGHESTPARENTou une référence de champ) et que le calcul est évalué au niveau cible ou supérieur à celui de la hiérarchie, le calcul est réinitialisé pour chaque élément individuel. Autrement dit, la fonction est évaluée dans une partition contenant uniquement cet élément spécifique.
Les exemples de cet article peuvent être utilisés avec l’exemple de modèle Adventure Works DW 2020 Power BI Desktop. Pour obtenir le modèle, consultez DAX exemple de modèle.
Exemple 1 : mesure
La mesure suivante :
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 la moyenne de 3 jours des prix unitaires pour chaque produit. La fenêtre de 3 jours se compose de trois jours sur lesquels le produit avait des ventes, pas nécessairement trois jours calendaires consécutifs.
Exemple 2 : mesure
La mesure suivante :
RunningSum =
SUMX (
WINDOW (
1,
ABS,
0,
REL,
ALLSELECTED ( 'Date'[Fiscal Year], 'Date'[Month Number Of Year] ),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Retourne la somme en cours d’exécution pour le nombre total de ventes par mois d’année, en redémarrant pour chaque année fiscale :
| Année | Nombre de mois de l’année | Montant des ventes | 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 mois, calculé le long de chaque année. La valeur 1 peut être utilisée au lieu de HIGHESTPARENT, avec le même résultat.
La capture d’écran ci-dessous montre la matrice visuelle et l’expression 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 mois, calculé le long de chaque trimestre.
La valeur LOWESTPARENT peut être utilisée au lieu de -1, avec le même résultat.