Share via


CROSSFILTER

Aplica-se a:Colunacalculada Tabelacalculada MedidaCálculo visual

Especifica a direção de filtragem cruzada a ser usada em um cálculo para uma relação que existe entre duas colunas.

Sintaxe

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

Parâmetros

Termo Definição
columnName1 O nome de uma coluna existente, usando sintaxe DAX padrão e totalmente qualificada, que geralmente representa os muitos lados da relação a ser usada; Se os argumentos forem dados em ordem inversa, a função irá trocá-los antes de usá-los. Este argumento não pode ser uma expressão.
columnName2 O nome de uma coluna existente, usando sintaxe DAX padrão e totalmente qualificada, que geralmente representa o lado ou o lado de pesquisa da relação a ser usada; Se os argumentos forem dados em ordem inversa, a função irá trocá-los antes de usá-los. Este argumento não pode ser uma expressão.
Direção A direção do filtro cruzado a ser usada. Deve ser uma das seguintes opções:

Nenhum - Nenhuma filtragem cruzada ocorre ao longo desta relação.

Ambos - Filtros em ambos os lados filtra o outro lado.

OneWay - Filtros de um lado ou do lado de pesquisa de um relacionamento filtram o outro lado. Esta opção não pode ser usada com uma relação um-para-um . Não use essa opção em um relacionamento muitos-para-muitos porque não está claro qual é o lado da pesquisa; em vez disso, use OneWay_LeftFiltersRight ou OneWay_RightFiltersLeft.

OneWay_LeftFiltersRight - Filtros no lado de <columnName1> filtram o lado de <columnName2>. Esta opção não pode ser usada com uma relação um-para-um ou muitos-para-um.

OneWay_RightFiltersLeft - Filtros no lado de <columnName2> filtram o lado de <columnName1>. Esta opção não pode ser usada com uma relação um-para-um ou muitos-para-um.

Valor devolvido

A função não retorna nenhum valor; A função apenas define a direção da filtragem cruzada para a relação indicada, durante a duração da consulta.

Observações

  • No caso de uma relação 1:1, não há diferença entre uma e ambas as direções.

  • CROSSFILTER só pode ser usado em funções que tomam um filtro como argumento, por exemplo: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD funções.

  • CROSSFILTER usa relações existentes no modelo, identificando relações por suas colunas de ponto final.

  • Em CROSSFILTER, a configuração de filtragem cruzada de um relacionamento não é importante; ou seja, se a relação está definida para filtrar uma ou ambas as direções no modelo não afeta o uso da função. CROSSFILTER substituirá qualquer configuração de filtragem cruzada existente.

  • Um erro será retornado se qualquer uma das colunas nomeadas como argumento não fizer parte de um relacionamento ou se os argumentos pertencerem a relações diferentes.

  • Se as expressões CALCULATE estiverem aninhadas e mais de uma expressão CALCULATE contiver uma função CROSSFILTER, então o CROSSFILTER mais interno é aquele que prevalece em caso de conflito ou ambiguidade.

  • Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).

Exemplo

No diagrama de modelo a seguir, DimProduct e DimDate têm uma relação de direção única com FactInternetSales.

CROSSFILTER_Examp_DiagView

Por padrão, não podemos obter a Contagem de Produtos vendidos por ano:

CROSSFILTER_Examp_PivotTable1

Existem duas maneiras de obter a contagem de produtos por ano:

  • Ative a filtragem cruzada bidirecional na relação. Isso mudará a forma como os filtros funcionam para todos os dados entre essas duas tabelas.

  • Use a função CROSSFILTER para alterar como as relações funcionam apenas para essa medida.

Ao usar o DAX, podemos usar a função CROSSFILTER para alterar como a direção do filtro cruzado se comporta entre duas colunas definidas por uma relação. Nesse caso, a expressão DAX tem esta aparência:

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

Usando a função CROSSFILTER em nossa expressão de medida, obtemos os resultados esperados:

CROSSFILTER_Examp_PivotTable2