Olá, João, tudo bem?
Interessante a sua dúvida! A função CALCULATE
modifica o contexto de cálculo das medidas. Quando você utiliza a função ALL
dentro do CALCULATE
, você está removendo todos os filtros que possam estar sendo aplicados a uma determinada coluna ou tabela. No entanto, o que acontece na prática é que o contexto externo (isto é, o contexto da visualização onde a medida está sendo utilizada) ainda pode influenciar o resultado final.
No caso da sua primeira tabela, ao exibir a coluna "Categoria", você está criando um contexto de filtro para cada linha dessa coluna. Quando você utiliza a medida Fantasia Vendas ALL
, que ignora os filtros da coluna "Categoria" devido ao ALL
, você acaba vendo o valor total para a categoria "Fantasia" em todas as linhas, pois o contexto de linha da tabela está sendo sobreposto pelo CALCULATE
.
Já na tabela ao lado, onde a coluna "Categoria" não está presente, o contexto de linha é definido pela coluna "Editora". A medida Fantasia Vendas ALL
continua ignorando os filtros da coluna "Categoria", mas agora não há um contexto de filtro de "Categoria" para ser sobreposto. Em vez disso, o contexto de filtro é definido pela "Editora". Assim, o que você vê é o total de vendas da categoria "Fantasia" para cada editora, respeitando o contexto de filtro da coluna "Editora".
O ponto chave aqui é que o contexto de filtro da visualização afeta o resultado da medida CALCULATE
. Quando a coluna "Categoria" está presente na visualização, ela cria um contexto de filtro que é sobreposto pela função ALL
dentro do CALCULATE
. Quando a coluna "Categoria" não está presente, o contexto de filtro é definido por outros elementos na visualização, como a coluna "Editora", e o CALCULATE
respeita esse novo contexto.
Espero que essa explicação tenha esclarecido a diferença de comportamento que você observou nas tabelas.
Caso surja alguma dúvida, não hesite em compartilhar no fórum.
Abraços e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!