Aprenda a utilizar todas a função ALLSELECTED e as outras funções ALL disponíveis na linguagem DAX, com suas aplicações dentro do Power BI. As 4 funções tratadas neste artigo são ALL, ALLSELECTED, ALLNOBLANKROW, ALLEXCEPT. É só deslizar para baixo para aprender mais sobre estas funções e tirar aquela dúvida que está te mantando.

Estas funções são do grupo de funções de Filtro, além destas, há outras funções para filtrar informações que são interessantes de se aprender. Mas neste tópico trataremos somente das que levam ALL no nome.

Temos um e-book com outras funções. É gratuito e oferecemos a todos que querem aprender mais sobre linguagem DAX e Power BI. Clique na figura abaixo e baixe seus e-book, totalmente gratuito.

15 funções DAX mais usadas

Antes de mais nada baixe o arquivo do Power BI Desktop em que fizemos todas as fórmulas por este link.

Inserindo uma nova medida no Power BI

Caso ainda não saiba como criar uma medida, segue abaixo um pequeno passa a passo, simples. Todas as fórmulas que utilizaremos aqui seguirá este mesmo padrão.

No Power BI Desktop, conforme a tela abaixo, clique na faixa de opções Modelagem (1) em seguida clique em Nova Medida (2), será aberta uma linha para você digitar a nova medida que será criada (3). Muito simples, não é?

Funções DAX nova medida

Função ALL

Explicamos a função ALL no artigo: 5 funções DAX para usar muito no Power BI , clique e veja como esta função é utilizada geralmente.

Ela retorna todas as linhas de uma tabela, ou todos os valores de uma coluna. Ignora assim qualquer um dos filtros feitos na visualização. A função ALL é utilizada em casos que o cálculo não deve levar em conta nenhum dos filtros, precisando apresentar valor cheio. Ou mesmo quando se necessita dividir algum valor que responde ao filtro por um denominador que não responde.

Ela não pode ser utilizada sozinha e sim como uma função intermediária.

 

Função ALLSELECTED

Esta função faz com que seu cálculo respeite o contexto dos itens selecionados. Enquanto a função ALL remove todos os filtros do cálculo a função ALLSELECTED considera os filtros no cálculo, desconsiderando apenas os filtros e agrupamentos de colunas e linhas.

Vou me explicar melhor com base na figura abaixo:

Função ALLSELECTED e outras

Este é o exemplo que estamos disponibilizando para acompanhar todas as funções deste artigo. Clique para baixar o modelo em PBIX.

Veja acima que a tabela soma o Total de Vendas de produtos (Coluna: Total Venda). Nesta tabela temos o percentual das vendas de cada mês em relação ao ano todo (Coluna: % Vendas ALL), esta coluna foi feita utilizando a função ALL (2). Temos também o percentual das vendas de cada mês considerando somente os meses selecionados (Coluna: % Vendas ALLSELECTED), esta coluna foi feita utilizando a função ALLSELECTED (3).

Vejam que selecionamos 4 meses (1) e a fórmula que utilizamos (ALLSELECTED) respondeu a seleção e calculou o percentual somente em relação a esta seleção. Dividiu cada um dos meses nas linhas pela soma de todos os meses selecionados. Por isso falamos em contexto.

Estrutura da fórmula: ALLSELECTED (<tabela> ou <coluna>)

Nos parâmetros, podemos usar o nome de uma tabela ou coluna existente, neste caso não pode ser uma expressão.

Esta função retorna um valor que responde ao contexto, mas não considera filtros de coluna e linha, ou seja, retém todos os filtros de contexto que não sejam filtros de linhas e de colunas. Diferente da função ALL que não considera filtro algum.

Abaixo está como escrevemos a função que gerou a figura acima no exemplo disponibilizado:

Total Vendas ALLSELECTED =
CALCULATE ( SUM ( Vendas[Total Venda] ); ALLSELECTED ( Vendas ) )

No exemplo, utilizamos o resultado do % de vendas com a função ALLSELECTED, com um gráfico de cascata (waterfall). Este é um dos melhores gráficos para apresentar este tipo de resultado. Veja como ficou.

Grafico Waterfall com função ALLSELECTED

A função ALLSELECTED é complexa, tem diferenças em seu comportamento, neste artigo não entraremos em todas as variantes de resultados que a função pode trazer, mas futuramente teremos um artigo completo sobre esta função específica.

 

Função ALLEXCEPT

Esta função tem quase a mesma lógica do da função ALLSELECTED, mas com efeito contrário. A função ALLEXCEPT remove do resultado os filtros de contexto, exceto filtros que foram aplicados em colunas específicas no campo coluna da fórmula.

Estrutura da fórmula: ALLEXCEPT (<tabela>;[<coluna>])

Primeiro determina a tabela que os filtros de contexto não serão considerados, em seguida a coluna ou colunas que deseje que o filtro de contexto obedeça, ou seja, as colunas que especificar a frente serão consideradas no filtro. Logo mais abaixo exemplifico melhor.

Não é possível usar expressões de tabela ou coluna dentro da função ALLEXCEPT. É uma função que não pode ser utilizada sozinha e sim dentro de uma outra função. O valor de retorno será aquele em que a tabela colocada dentro desta função terá seus filtros removidos, exceto os filtros que estiverem contemplado nas colunas especificadas na continuação da função ALLEXCEPT.

Abaixo está como escrevemos a função utilizada no exemplo disponibilizado.

Total Vendas ALLEXCEPT =
CALCULATE (
    SUM ( Vendas[Total Venda] );
    ALLEXCEPT ( CalendarioDAX; CalendarioDAX[Date] )
)

Para um melhor entendimento desta função vamos analisar a figura abaixo.

Função ALLEXCEPT 1

Vemos os filtros selecionados, de Mês (1) e Categoria (2). A coluna “%Vendas ALL” não responde a nenhum filtro desses, pois utiliza a função ALL. A coluna “% Vendas ALLSELECTED” responde aos 2 campos de filtros, pois utiliza a função ALLSELECTED. Já a coluna “% Vendas ALLEXCEPT” (3) responde somente ao filtro Categoria.

O motivo é porque na fórmula que colocamos acima falamos para o Power BI não considerar a tabela Calendário DAX nos filtros. Isto a fórmula fez, exceto para a coluna “Date”. Caso fosse feito alguma segmentação de dados com a coluna Date, este seria considerado. Visto que está na função como uma coluna que será exceção ao ALLEXCEPT.

Parece complicado, mas não é.

Abaixo fizemos uma nova função usando ALLEXCEPT, mas colocando o nome do mês para ser considerado no cálculo. Veja como ficou a fórmula.

Total Vendas ALLEXCEPT_B =
CALCULATE (
    SUM ( Vendas[Total Venda] );
    ALLEXCEPT ( CalendarioDAX; CalendarioDAX[Date]; CalendarioDAX[NomeMês] )
)

Na tabela estão, lado a lado, o resultado das duas fórmulas ALLEXCEPT para que você compare.

Função ALLEXCEPT 2

Perceba que estão feitos os mesmos filtros que fizemos antes, mas a tabela mostra os valores absolutos e não em percentual. Na coluna “Total Vendas ALLEXCEPT” está o total de vendas da Categoria “Acessórios” (filtrada) sem considerar o filtro de mês. Na Coluna “Total Vendas ALLEXCEPT_B” consta o resultado dessa última fórmula que fizemos.

Observe que nesta última fórmula colocamos que a coluna “NomeMês” seria considerada no filtro, colocando esta coluna nos argumentos da função ALLEXCEPT. Assim dizemos a fórmula que esta coluna não deve entrar na remoção dos filtros. Como o nome do mês é um filtro este é considerado.

 

Função ALLNOBLANKROW

Esta função retorna, a partir de uma tabela determinada, todas as linhas, exceto as em branco. Ou também todos os valores diferentes de uma coluna, exceto a linha que está em branco. Desconsidera todos os filtros de contexto existentes.

Estrutura da fórmula: ALLNOBLANKROW (<tabela> ou <coluna>)

Somente um dos parâmetros é colocado, ou a tabela ou a coluna. Determine qual a tabela ou qual a coluna que os filtros de contexto serão removidos.

Esta função tem boa utilidade no caso de cruzamento entre tabelas, onde falta alguma informação entre as tabelas.

Por exemplo: Na tabela de Vendas há produtos vendidos pelo vendedor “XYZ”, mas este vendedor foi retirado da tabela Vendedores devido a desligamento.

Caso queira apresentar todas as vendas, por vendedores e dividir a proporção pelo total de vendas por vendedor, sem considerar as vendas do vendedor demitido. Esta função pode se aplicar. Assim a função vai desconsiderar as linhas em branco das vendas que foram feitas pelo vendedor “XYZ” do cálculo.

Ainda não temos um exemplo interessante e que resolva qualquer dúvida no assunto, assim que tivermos publicaremos aqui. Por enquanto, caso necessite de mais esclarecimentos sobre esta função entrar no site de referência da Microsoft clicando neste link.

Fique atento para mais artigos sobre o assunto aqui no nosso blog.

As funções de filtro têm papel importantíssimo na montagem de boas estruturas em DAX, elas resolvem muitas necessidades de comparações entre os totais, sem levar em conta o contexto ou mesmo levando este em conta. Utilizamos mais elas nestes casos, mas sempre há outras boas utilizações.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!