WINDOW
s’applique à :colonne calculéetable calculéemesurecalcul 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 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 est ABSet que 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 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.
Si spécifiée, toutes les colonnes de partitionBy doivent provenir de celle-ci ou d’une table associée.
s’il est omis : - orderBy doit être spécifié explicitement.- Toutes les expressions orderBy et partitionBy 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 . |
axis |
(Facultatif) Axe de la forme du visuel. Disponible uniquement dans les calculs visuels et remplace relation . |
orderBy |
(Facultatif) Clause ORDERBY() contenant les expressions qui définissent la façon dont chaque partition est triée.
s’il est omis : - relation doit être spécifié explicitement.
: la commande par défaut par chaque colonne de relation qui n’est pas déjà spécifiée 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 :
Remarque, lorsque le paramètre blanks et les vides dans la fonction ORDERBY() () sur les expressions individuelles sont tous deux spécifiés, blanks sur l’expression orderBy individuelle prend la priorité pour l’expression orderBy appropriée, et les expressions orderBy sans blanks être spécifiées respecteront le paramètre blanks sur la fonction parente. |
partitionBy |
(Facultatif) Clause PARTITIONBY() contenant les colonnes qui définissent la façon dont 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 , HIGHESTPARENT ou 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 fonctions de table, chaque colonne de relation
, lorsque matchBy
n’est pas présente, ou chaque colonne dans matchBy
et partitionBy
, lorsque matchBy
est présente, doit avoir une valeur externe correspondante pour aider à définir la ligne actuelle sur laquelle fonctionner. Si from_type
et to_type
ont tous deux une valeur ABS, ce qui suit s’applique uniquement aux colonnes partitionBy
:
- S’il existe exactement une colonne externe correspondante, sa valeur est utilisée.
- S’il n’existe aucune colonne externe correspondante :
- 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 WINDOWcontexte parent, WINDOW est évaluée et les lignes correspondantes sont retournées.
- WINDOW sortie finale est une union de ces lignes.
- S’il existe plusieurs colonnes externes correspondantes, une erreur est retournée.
Si toutes les colonnes de relation
ont été ajoutées par DAX fonctions de table, une erreur est retournée.
Si matchBy
est présente, WINDOW essaie d’utiliser matchBy
et partitionBy
colonnes pour identifier la ligne.
Si 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
, puis :
- WINDOW tenterez de trouver le nombre minimum 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 à
orderBy
, et chaque partition est triée à l’aide de ce nouvel ensemble de colonnes orderBy. - Si de telles colonnes sont introuvables, une erreur est retournée.
Une table vide est retournée si :
- La valeur externe correspondante d’une colonne
orderBy
oupartitionBy
n’existe pas dansrelation
. - La fenêtre entière est en dehors de la partition, ou le début de la fenêtre est après sa fin.
Si WINDOW est utilisé dans une colonne calculée définie sur la même table que relation
et que orderBy
est omis, une erreur est retournée.
Si le début de la fenêtre s’affiche 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.
reset
peuvent être utilisés uniquement dans les calculs visuels et ne peuvent pas être utilisés en combinaison avec orderBy
ou partitionBy
. Si reset
est présente, axis
peut être spécifié, mais relation
ne peut pas le faire.
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. Notez que la fenêtre de 3 jours se compose de trois jours dans lesquels le produit a 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 | 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 mois, calculé le long de chaque année. Les valeurs 1 et -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 et 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 mois, calculé le long de chaque trimestre.
Contenu connexe
INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM