Partage via


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 :
  • DEFAULT (valeur par défaut), où le comportement des valeurs numériques est des valeurs vides sont classés entre zéro et valeurs négatives. Le comportement des chaînes est des valeurs vides classées avant toutes les chaînes, y compris les chaînes vides.
  • FIRST, les espaces sont toujours classés au début, quel que soit l’ordre croissant ou décroissant.
  • LAST, les espaces sont toujours triés à la fin, quel que soit l’ordre croissant ou décroissant.

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, 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 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 relationont é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 ou partitionBy n’existe pas dans relation.
  • 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 relationet 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 :

DAX 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.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM