Compartilhar via


CROSSFILTER

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

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

Sintaxe

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

Parâmetros

Termo Definição
columnName1 O nome de uma coluna existente, usando a sintaxe do DAX padrão e totalmente qualificada, que geralmente representa o lado muitos da relação a ser usada; se os argumentos forem especificados na ordem inversa, a função os trocará antes de usá-los. Esse argumento não pode ser uma expressão.
columnName2 O nome de uma coluna existente, usando a sintaxe DAX padrão e totalmente qualificada, que geralmente representa o único lado ou o lado de pesquisa da relação a ser usado; se os argumentos forem especificados na ordem inversa, a função os trocará antes de usá-los. Esse argumento não pode ser uma expressão.
Direção A direção do filtro cruzado a ser usada. Deve ser uma destas opções:

None – nenhuma filtragem cruzada ocorre nessa relação.

Both – os filtros em qualquer um dos lados e filtram o outro lado.

OneWay – os filtros de um lado ou o lado de pesquisa de uma relação filtram o outro lado. Esta opção não pode ser usada com uma relação de um para um. Não use esta opção em uma relação de muitos para muitos porque não está claro qual lado é o lado de pesquisa; em vez disso, use OneWay_LeftFiltersRight ou OneWay_RightFiltersLeft.

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

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

Retornar valor

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

Comentários

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

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

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

  • Em CROSSFILTER, a configuração de filtragem cruzada de uma relação não é importante; ou seja, o fato de a relação estar definida para filtrar um ou ambos os sentidos no modelo não afeta o uso da função. CROSSFILTER substituirá qualquer configuração de filtragem cruzada existente.

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

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

  • Não há suporte para a função ser usada no modo DirectQuery quando usada em regras RLS (segurança em nível de linha) ou colunas calculadas.

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

Há duas maneiras de obter a contagem de produtos por ano:

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

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

Ao usar o DAX, podemos usar a função CROSSFILTER para alterar a forma como a direção de filtro cruzado se comporta entre duas colunas definidas por uma relação. Nesse caso, a expressão DAX é parecida com esta:

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

Ao usar a função CROSSFILTER em nossa expressão de medida, obteremos os resultados esperados:

CROSSFILTER_Examp_PivotTable2