CROSSFILTER
s’applique à :colonne calculéetable calculéemesurecalcul visuel
Spécifie la direction de filtrage croisé à utiliser dans un calcul pour une relation qui existe entre deux colonnes.
Syntaxe
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Paramètres
Terme | Définition |
---|---|
columnName1 |
Nom d’une colonne existante, à l’aide de la syntaxe de DAX standard et de la syntaxe complète, qui représente généralement le côté multiple de la relation à utiliser ; si les arguments sont donnés dans l’ordre inverse, la fonction les permutera avant de les utiliser. Cet argument ne peut pas être une expression. |
columnName2 |
Nom d’une colonne existante, à l’aide de la syntaxe de DAX standard et complète, qui représente généralement le côté un côté ou la recherche de la relation à utiliser ; si les arguments sont donnés dans l’ordre inverse, la fonction les permutera avant de les utiliser. Cet argument ne peut pas être une expression. |
Direction |
Direction du filtre croisé à utiliser. Doit être l’un des éléments suivants :None - Aucun filtrage croisé ne se produit le long de cette relation.Both - Filtres sur les deux côtés filtre l’autre côté.OneWay - Filtres d’un côté ou du côté 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 n’est pas clair quel côté est la recherche ; utilisez OneWay_LeftFiltersRight ou OneWay_RightFiltersLeft à la place.OneWay_LeftFiltersRight - Filtres côté columnName1 filtrer le côté de columnName2 . Cette option ne peut pas être utilisée avec une relation un-à-un ou plusieurs-à-un.OneWay_RightFiltersLeft - Filtres côté columnName2 filtrer le côté de columnName1 . Cette option ne peut pas être utilisée avec une relation un-à-un ou plusieurs-à-un. |
Valeur de retour
La fonction ne retourne aucune valeur ; la fonction définit uniquement la direction de filtrage croisé pour la relation indiquée, pendant la durée de la requête.
Remarques
Dans le cas d’une relation 1:1, il n’y a aucune différence entre l’une et les deux directions.
CROSSFILTER ne peut être utilisé que dans les fonctions qui prennent un filtre en tant qu’argument, par exemple : CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD et TOTALYTD fonctions.
CROSSFILTER utilise des relations existantes dans le modèle, identifiant les relations par leurs colonnes de point de terminaison.
Dans CROSSFILTER, le paramètre de filtrage croisé d’une relation n’est pas important ; autrement dit, si la relation est définie pour filtrer une ou les deux directions dans le modèle n’affecte pas l’utilisation de la fonction. CROSSFILTER remplacera tout paramètre de filtrage croisé existant.
Une erreur est retournée si l’une des colonnes nommées en tant qu’argument ne fait pas partie d’une relation ou si les arguments appartiennent à des relations différentes.
Si CALCULATE expressions sont imbriquées et que plusieurs expressions CALCULATE contiennent une fonction CROSSFILTER, la CROSSFILTER la plus intérieure est celle 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 lorsqu’elle est utilisée dans les colonnes calculées ou les règles de sécurité au niveau des lignes (RLS).
Exemple
Dans le diagramme de modèle suivant, DimProduct et DimDate ont une relation directionnelle unique avec FactInternetSales.
Par défaut, nous ne pouvons pas obtenir le nombre de produits vendus par année :
Il existe deux façons d’obtenir le nombre de produits par année :
Activez le filtrage croisé bidirectionnel sur la relation. Cela modifiera le fonctionnement des filtres pour toutes les données entre ces deux tables.
Utilisez la fonction CROSSFILTER pour modifier le fonctionnement des relations pour cette mesure.
Lorsque vous utilisez DAX, nous pouvons 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 ressemble à ceci :
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 :