Compartir a través de


CROSSFILTER

Se aplica a:columna CalculadaTabla calculadaMeasurecá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 and completo, que normalmente representa el lado de la relación que se va a usar; if los argumentos se proporcionan en orden inverso que 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 and completa, que normalmente representa el lado or de búsqueda de la relación que se va a usar; if los argumentos se proporcionan en orden inverso que la función los intercambiará antes de usarlos. Este argumento no puede ser una expresión.
Direction Dirección entrefilter 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: Filters en cualquier lado filters el otro lado.

OneWay: Filters en un lado or el lado de búsqueda de una relación filter el 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 or OneWay_RightFiltersLeft en su lugar.

OneWay_LeftFiltersRight: Filters en el lado de columnName1filter el lado de columnName2. Esta opción no se puede usar con una relación de uno a uno or de varios a uno.

OneWay_RightFiltersLeft: Filters en el lado de columnName2filter el lado de columnName1. Esta opción no se puede usar con una relación de uno a uno or de varios a uno.

Devolver value

La función no devuelve ningún value; la función solo establece la dirección de filtrado cruzado para la relación indicada, para el duration de la consulta.

Observaciones

  • En el caso de una relación 1:1, no hay ninguna diferencia entre la and ambas direcciones.

  • CROSSFILTER solo se puede usar en funciones que toman un filter como argumento, por ejemplo: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTDandTOTALYTD 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 es not importante; es decir, si la relación se establece en filter una, or ambas direcciones del modelo not afecta al uso de la función. CROSSFILTER invalidará cualquier configuración de filtrado cruzado existente.

  • Se devuelve un errorif cualquiera de las columnas denominadas como argumento se not parte de una relación or los argumentos pertenecen a relaciones diferentes.

  • If CALCULATE expresiones están anidadas, and más de una expresión CALCULATEcontains una función de CROSSFILTER, la CROSSFILTER más interna es la que prevalece en caso de conflicto or ambigüedad.

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

Ejemplo

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

CROSSFILTER_Examp_DiagView

De forma predeterminada, no podemos obtener la Count de Productos vendidos por year:

CROSSFILTER_Examp_PivotTable1

Hay dos maneras de obtener el count de productos por year:

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

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

Al usar DAX, podemos usar la función CROSSFILTER para cambiar cómo se comporta la dirección entrefilter 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 measure, obtenemos los resultados esperados:

CROSSFILTER_Examp_PivotTable2