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
Prazo | Definição |
---|---|
columnName1 |
O nome de uma coluna existente, usando a sintaxe DAX padrão e totalmente qualificado, que geralmente representa o lado muitos da relação a ser usada; se os argumentos forem fornecidos 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 de 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 fornecidos na ordem inversa, a função os trocará antes de usá-los. Esse argumento não pode ser uma expressão. |
Direction |
A direção do filtro cruzado a ser usada. Deve ser um dos seguintes:None - Nenhuma filtragem cruzada ocorre ao longo dessa relação.Both - Filtros de ambos os lados filtram o outro lado.OneWay - Filtros de um lado ou do lado de pesquisa de uma relação filtram o outro lado. Essa opção não pode ser usada com uma relação um-para-um. Não use essa opção em uma relação muitos para muitos porque não está claro qual lado é o lado da pesquisa; em vez disso, use OneWay_LeftFiltersRight ou OneWay_RightFiltersLeft.OneWay_LeftFiltersRight - Filtros na lateral do columnName1 filtrar o lado do columnName2 . Essa opção não pode ser usada com uma relação um-para-um ou muitos-para-um.OneWay_RightFiltersLeft - Filtros na lateral do columnName2 filtrar o lado do columnName1 . Essa 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 define apenas a direção de filtragem cruzada para a relação indicada, durante a 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 utilizam um filtro como argumento, por exemplo: funções CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD.
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 afetam 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 um argumento não fizer parte de uma relação ou 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, a CROSSFILTER mais interna será aquela que prevalece em caso de conflito ou ambiguidade.
Essa função não tem suporte para uso no modo DirectQuery quando usada em colunas calculadas ou regras de RLS (segurança em nível de linha).
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 é possível obter a Contagem de Produtos vendidos por ano:
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 como as relações funcionam apenas para essa medida.
Ao usar DAX, podemos usar a função CROSSFILTER para alterar como a direção de 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: