CROSSFILTER

S’applique à :Colonne calculéeTable calculéeMesureCalcul visuel

Spécifie la direction du filtrage croisé à utiliser dans un calcul pour une relation existant entre deux colonnes.

Syntaxe

CROSSFILTER(<columnName1>, <columnName2>, <direction>)  

Paramètres

Terme Définition
columnName1 Nom complet d’une colonne existante spécifié avec la syntaxe DAX standard. Il représente généralement le côté « plusieurs » de la relation à utiliser. Si les arguments sont fournis dans l’ordre inverse, la fonction les permute avant de les utiliser. Cet argument ne peut pas être une expression.
columnName2 Nom complet d’une colonne existante spécifié avec la syntaxe DAX standard. Il représente généralement le côté « un » ou le côté de la recherche de la relation à utiliser. Si les arguments sont fournis dans l’ordre inverse, la fonction les permute avant de les utiliser. Cet argument ne peut pas être une expression.
Direction Direction du filtre croisé à utiliser. Doit prendre l'une des valeurs suivantes :

None : Aucun filtrage croisé n’est effectué sur cette relation.

Both : Les filtres sur les deux côtés filtrent l’autre côté.

OneWay : Les filtres sur un côté ou le côté de la recherche d’une relation filtrent l’autre côté. Cette option ne peut pas être utilisée avec une relation un-à-un. N’utilisez pas cette option sur une relation plusieurs-à-plusieurs, car il est impossible de déterminer le côté de la recherche. Utilisez plutôt OneWay_LeftFiltersRight ou OneWay_RightFiltersLeft.

OneWay_LeftFiltersRight : les filtres sur le côté de <columnName1> filtrent le côté de <columnName2>. Cette option ne peut pas être utilisée avec une relation un-à-un ou plusieurs-à-un.

OneWay_RightFiltersLeft : les filtres sur le côté de <columnName2> filtrent le côté de <columnName1>. Cette option ne peut pas être utilisée avec une relation un-à-un ou plusieurs-à-un.

Valeur renvoyée

La fonction ne retourne aucune valeur. Elle définit uniquement la direction du filtrage croisé pour la relation indiquée et pour la durée de la requête.

Notes

  • Dans le cas d’une relation 1:1, il n’y a pas de différence entre les directions one et both.

  • CROSSFILTER peut être utilisé uniquement dans les fonctions qui utilisent un filtre comme argument, par exemple : CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD et TOTALYTD.

  • CROSSFILTER utilise les relations existantes du modèle en identifiant les relations par leurs colonnes de fin.

  • Avec la fonction CROSSFILTER, la définition du filtrage croisé d’une relation n’a pas d’importance. Le fait de définir la relation pour filtrer sur une ou deux directions dans le modèle n’affecte pas l’utilisation de la fonction. La fonction CROSSFILTER remplace toute définition de filtrage croisé existante.

  • Une erreur est retournée si l’une des colonnes nommées comme argument ne fait pas partie d’une relation ou si les arguments appartiennent à des relations différentes.

  • Si des expressions CALCULATE sont imbriquées et que plusieurs expressions CALCULATE contiennent une fonction CROSSFILTER, c’est la fonction CROSSFILTER la plus intérieure qui prévaut en cas de conflit ou d’ambiguïté.

  • Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery quand elle est utilisée dans des colonnes calculées ou des règles de sécurité au niveau des lignes (RLS).

Exemple

Dans le modèle de diagramme suivant, DimProduct et DimDate présentent une relation de direction unique avec FactInternetSales.

CROSSFILTER_Examp_DiagView

On ne peut obtenir, par défaut, le nombre de produits vendus par année :

CROSSFILTER_Examp_PivotTable1

Il existe deux façons d’obtenir le nombre de produits par année :

  • Activez le filtrage croisé bidirectionnel sur la relation. Cela modifiera la façon dont fonctionnent les filtres pour toutes les données entre ces deux tables.

  • Utilisez la fonction CROSSFILTER pour modifier la façon dont fonctionnent les relations pour cette mesure uniquement.

Avec DAX, vous pouvez utiliser la fonction CROSSFILTER pour modifier le comportement de la direction du filtre croisé entre deux colonnes définies par une relation. Dans ce cas, l’expression DAX se présente comme suit :

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

En utilisant la fonction CROSSFILTER dans notre expression de mesure, nous obtenons les résultats attendus :

CROSSFILTER_Examp_PivotTable2