CROSSFILTER
Aplica-se a:Coluna calculada
Tabela calculada
Medida
Cá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
Vigência | 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. |
Direction |
A direção do filtro cruzado a ser usada. Deve ser uma das seguintes opções:None - Não ocorre filtragem cruzada ao longo desta relação.Both - Filtros de ambos os lados filtram o outro lado.OneWay - 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 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 na lateral da columnName1 filtram a lateral da columnName2 . Esta opção não pode ser usada com uma relação um-para-um ou muitos-para-um.OneWay_RightFiltersLeft - Filtros na lateral da columnName2 filtram a lateral da columnName1 . Esta opção não pode ser usada com uma relação um-para-um ou muitos-para-um. |
Valor de retorno
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.
Comentários
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 uma relação 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 CALCULATE expressões estiverem aninhadas e mais de uma expressão CALCULATE contiver uma função CROSSFILTER, então a CROSSFILTER mais interna é a 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.
Por padrão, não podemos obter a Contagem de Produtos vendidos por ano:
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 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. Neste 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: