Função cross filter

Ao relacionar duas tabelas temos a opção de definir qual a forma como as fórmulas do nosso relatório são filtradas, permitindo criar um filtro bidirecional, ou seja, em qualquer dos sentidos da relação.

Esta opção apesar de útil nalgum caso poderá criar alguma ambiguidade nos resultados e retornar resultados incorretos. No entanto podemos através de DAX criar filtros bidirecionais ou mesmo desativar a relação.

Para isso utilizamos a função CROSSFILTER que podemos definir como:

  • Uma função que especifica a direção de filtragem cruzada a ser utilizada num cálculo para uma relação existente entre duas colunas.

O que significa que com esta função podemos alterar a forma com o filtro cruzado se comporta entre duas colunas definidas numa relação.

Vamos ter em conta um modelo simplificado abaixo:

Vamos criar uma visualização com os seguintes dados:

  • Ano: Tabela Calendar
  • Sales: SUM(Sales[SalesAmount]
  • Product Count: COUNT(‘Product'[ProductKey])

Como podemos verificar na imagem acima a contagem dos dados através da tabela dimensão Product devolve-nos o total de 1.690 em todas as linhas que é o total de linhas nessa mesma tabela:

Vamos então fazer uso da função CROSSFILTER e reformular a medida Products Count:

Products Count = CALCULATE( COUNT('Product'[ProductKey]), CROSSFILTER( 'Product'[ProductKey],Sales[ProductKey],Both))

O resultado abaixo apresenta os dados dos produtos vendidos por ano:

A confirmação desta informação pode ser feita através da tabela das vendas que tendo um filtro pelo ano de 2011 verificamos que o total de Product Key é de 1.244.

Neste caso em particular utilizamos o CROSSFILTER para ativar o filtro cruzado bidirecional, mas também temos outras opções:

  • None – Desligar o filtro cruzado (similar a desativar a relação).
  • Both – Filtros em ambos os lados filtram o outro lado (exemplo acima).
  • OneWay – Filtros de um lado ou do lado de procura de um filtro de relacionamento do outro lado. Esta opção não pode ser utilizada com uma relação um-para-um. Esta opção não deverá ser utilizada numa relação de muitos para muitos.
  • OneWay_LeftFiltersRight – Filtros no lado do <columnName1> filtro do lado de <columnName2>. Apenas disponível numa relação muitos para muitos.
  • OneWay_RightFiltersLeft – Filtros no lado do <columnName2> filtro do lado de <columnName1>. Apenas disponível numa relação muitos para muitos.

Abaixo mostramos mais um exemplo da utilização desta função utilizando a opção None e como podemos verificar as vendas passam a ter um valor igual em todas os anos como se a relação tivesse sido desativada:

Sales cross filter = CALCULATE(SUM(Sales[SalesAmount]), CROSSFILTER(Sales[DateKey], 'Calendar'[DateKey], None)

Esta função só pode ser utilizada com outras funções que tenham um filtro como argumento tal como é o caso de: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

%d bloggers like this: