INDEX
s’applique à :colonne calculéetable calculéemesurecalcul visuel
Retourne une ligne à une position absolue, spécifiée par le paramètre de position, dans la partition spécifiée, triée par l’ordre spécifié. Si la partition actuelle ne peut pas être déduite d’une seule partition, plusieurs lignes peuvent être retournées.
Syntaxe
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Paramètres
Terme | Définition |
---|---|
position |
Position absolue (basée sur 1) à partir de laquelle obtenir les données : - position est positive : 1 est la première ligne, 2 est la deuxième ligne, etc. - position est négative : -1 est la dernière ligne, -2 est la deuxième ligne, etc. Lorsque position est hors de la limite, ou zéro, ou BLANK(), INDEX retourne une table vide. Il peut s’agir de n’importe quelle expression DAX qui retourne une valeur scalaire. |
relation |
(Facultatif) Expression de table à partir de laquelle la sortie est retournée.
Si spécifié, toutes les colonnes de partitionBy doivent provenir de celle-ci ou d’une table associée.
En cas d’omission : - 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 visuelle. 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 uniquement dans les calculs visuels. 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
Ligne à une position absolue.
Remarques
Chaque partitionBy
et colonne matchBy
doivent avoir une valeur externe correspondante pour vous aider à définir la « partition actuelle » sur laquelle fonctionner, avec le comportement suivant :
- S’il existe exactement une colonne externe correspondante, sa valeur est utilisée.
- S’il n’existe aucune colonne externe correspondante :
-
INDEX détermine d’abord toutes les colonnes
partitionBy
etmatchBy
qui n’ont aucune colonne externe correspondante. - Pour chaque combinaison de valeurs existantes pour ces colonnes dans le contexte parent de INDEX, INDEX est évaluée et une ligne est retournée.
- INDEXla sortie finale est une union de ces lignes.
-
INDEX détermine d’abord toutes les colonnes
- S’il existe plusieurs colonnes externes correspondantes, une erreur est retournée.
Si matchBy
est présente, INDEX 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
:
- INDEX 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, INDEX 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 PartitionBy n’existe pas dans
relation
. - La valeur
position
fait référence à une position qui n’existe pas dans la partition.
Si INDEX est utilisé dans une colonne calculée définie sur la même table que relation
et orderBy
est omise, une erreur est retournée.
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 : colonne calculée
Requête DAX suivante :
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Retourne le tableau suivant :
DimDate[CalendarYear] |
---|
2005 |
Exemple 2 : colonne calculée
Requête DAX suivante :
EVALUATE
SUMMARIZECOLUMNS (
FactInternetSales[ProductKey],
DimDate[MonthNumberOfYear],
FILTER (
VALUES(FactInternetSales[ProductKey]),
[ProductKey] < 222
),
"CurrentSales", SUM(FactInternetSales[SalesAmount]),
"LastMonthSales",
CALCULATE (
SUM(FactInternetSales[SalesAmount]),
INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
)
)
ORDER BY [ProductKey], [MonthNumberOfYear]
Retourne le tableau suivant :
FactInternetSales[ProductKey] | DimDate[MonthNumberOfYear] | [CurrentSales] | [LastMonthSales] |
---|---|---|---|
214 | 1 | 5423.45 | 8047.7 |
214 | 2 | 4968.58 | 8047.7 |
214 | 3 | 5598.4 | 8047.7 |
214 | 4 | 5073.55 | 8047.7 |
214 | 5 | 5248.5 | 8047.7 |
214 | 6 | 7487.86 | 8047.7 |
214 | 7 | 7382.89 | 8047.7 |
214 | 8 | 6543.13 | 8047.7 |
214 | 9 | 6788.06 | 8047.7 |
214 | 10 | 6858.04 | 8047.7 |
214 | 11 | 8607.54 | 8047.7 |
214 | 12 | 8047.7 | 8047.7 |
217 | 1 | 5353.47 | 7767.78 |
217 | 2 | 4268.78 | 7767.78 |
217 | 3 | 5773.35 | 7767.78 |
217 | 4 | 5738.36 | 7767.78 |
217 | 5 | 6158.24 | 7767.78 |
217 | 6 | 6998 | 7767.78 |
217 | 7 | 5563.41 | 7767.78 |
217 | 8 | 5913.31 | 7767.78 |
217 | 9 | 5913.31 | 7767.78 |
217 | 10 | 6823.05 | 7767.78 |
217 | 11 | 6683.09 | 7767.78 |
217 | 12 | 7767.78 | 7767.78 |
Exemple 3 : calcul visuel
Le calcul visuel suivant DAX requêtes :
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Améliorez une table afin qu’elle contienne, pour chaque mois :
- montant total des ventes ;
- différence entre le premier mois de l’année respective ;
- et la différence au premier mois du trimestre respectif.
La capture d’écran ci-dessous montre la matrice visuelle et la première expression de calcul visuel :
de calcul visuel