Compartir vía


CROSSFILTER

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

Especifica la dirección de filtrado cruzado que se va a usar en un cálculo de una relación que existe entre dos columnas.

Sintaxis

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

Parámetros

Término Definición
columnName1 El nombre de una columna existente, utilizando la sintaxis DAX estándar y completa, que normalmente representa el lado de la relación que se va a usar; si los argumentos se proporcionan en orden inverso, la función los intercambiará antes de usarlos. Este argumento no puede ser una expresión.
columnName2 El nombre de una columna existente, utilizando la sintaxis DAX estándar y completa, que normalmente representa el lado uno o el lado de búsqueda de la relación que se va a usar; si los argumentos se proporcionan en orden inverso, la función los intercambiará antes de usarlos. Este argumento no puede ser una expresión.
Direction Dirección del filtro cruzado que se va a usar. Debe ser uno de los siguientes:

None: no se produce ningún filtrado cruzado a lo largo de esta relación.

Both: los filtros de cualquiera de los lados filtran el otro lado.

OneWay: filtra por un lado o el lado de búsqueda de un filtro de relación del otro lado. Esta opción no se puede usar con una relación uno a uno . No use esta opción en una relación de varios a varios porque no está claro cuál es el lado de búsqueda; use OneWay_LeftFiltersRight o OneWay_RightFiltersLeft en su lugar.

OneWay_LeftFiltersRight: los filtros en el lado de columnName1 filtran el lado de columnName2. Esta opción no se puede usar con una relación uno a uno o varios a uno.

OneWay_RightFiltersLeft: los filtros en el lado de columnName2 filtran el lado de columnName1. Esta opción no se puede usar con una relación uno a uno o varios a uno.

Valor devuelto

La función no devuelve ningún valor; la función solo establece la dirección de filtrado cruzado para la relación indicada, mientras dure la consulta.

Observaciones

  • En el caso de una relación 1:1, no hay ninguna diferencia entre la dirección y la otra.

  • CROSSFILTER solo se puede usar en funciones que toman un filtro como argumento, por ejemplo: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD y TOTALYTD funciones.

  • CROSSFILTER usa relaciones existentes en el modelo, identificando las relaciones por sus columnas de punto final.

  • En CROSSFILTER, la configuración de filtrado cruzado de una relación no es importante; es decir, si la relación se establece para filtrar una o ambas direcciones del modelo no afecta al uso de la función. CROSSFILTER invalidará cualquier configuración de filtrado cruzado existente.

  • Se devuelve un error si alguna de las columnas denominadas como argumento no forma parte de una relación o los argumentos pertenecen a relaciones diferentes.

  • Si CALCULATE expresiones están anidadas y más de una expresión CALCULATE contiene una función CROSSFILTER, el CROSSFILTER más interno es el que prevalece en caso de conflicto o ambigüedad.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o reglas de seguridad de nivel de fila (RLS).

Ejemplo

En el siguiente diagrama de modelos, DimProduct y DimDate tienen una relación de dirección única con FactInternetSales.

CROSSFILTER_Examp_DiagView

De forma predeterminada, no podemos obtener el recuento de productos vendidos por año:

CROSSFILTER_Examp_PivotTable1

Hay dos maneras de obtener el recuento de productos por año:

  • Active el filtrado cruzado bidireccional en la relación. Esto cambiará el funcionamiento de los filtros para todos los datos entre estas dos tablas.

  • Use la función CROSSFILTER para cambiar el funcionamiento de las relaciones solo para esta medida.

Al usar DAX, podemos usar la función CROSSFILTER para cambiar cómo se comporta la dirección del filtro cruzado entre dos columnas definidas por una relación. En este caso, la expresión DAX tiene este aspecto:

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

Mediante el uso de la función CROSSFILTER en nuestra expresión de medida, obtenemos los resultados esperados:

CROSSFILTER_Examp_PivotTable2