Conheça a linguagem DAX e sua função no Power BI
DAX, sigla de Data Analysis Expressions, é a linguagem de fórmulas dos modelos tabulares da Microsoft. Com ela você escreve medidas, colunas calculadas e tabelas calculadas sobre colunas inteiras, ou seja, nunca sobre células soltas como no Excel.
Vale um esclarecimento antes de tudo: o DAX não é exclusivo do Power BI. A documentação da Microsoft descreve a linguagem como usada no Analysis Services, no Power BI e no Power Pivot do Excel.
Nas próximas seções você vai ver o que muda entre contexto de linha e contexto de filtro. Em seguida, CALCULATE, FILTER, ALL e RELATED aparecem com o resultado que cada uma devolve. Todos os números deste artigo saíram de um modelo de 1 milhão de linhas, isto é, nada aqui é hipotético.
O que é a linguagem DAX
A linguagem DAX é o conjunto de funções, operadores e valores que produz cálculos em modelos de dados tabulares. O motor avalia cada fórmula sobre tabelas e colunas relacionadas, jamais sobre uma célula isolada. É essa diferença, principalmente, que confunde quem chega do Excel e espera arrastar a fórmula linha a linha.
Toda fórmula DAX vive em três lugares dentro do modelo: medida, coluna calculada e tabela calculada. A escolha entre eles decide quando o cálculo acontece e, consequentemente, quanta memória o modelo consome.
| Objeto DAX | Quando o motor calcula | Onde o resultado fica | Responde ao filtro |
|---|---|---|---|
| Medida | a cada célula do visual | em memória, só durante a consulta | Sim |
| Coluna calculada | na atualização do modelo | gravada linha a linha, ocupa memória | Não |
| Tabela calculada | na atualização do modelo | gravada no modelo, consultável como qualquer tabela | Não |
Existe ainda um quarto uso: as regras de segurança em nível de linha também usam DAX. Segundo a mesma documentação, esse recurso não chega ao Power Pivot do Excel. Ou seja, os três produtos compartilham a linguagem sem serem idênticos por baixo.
O laboratório que gerou os números deste artigo
Todos os resultados abaixo saíram do Power BI Desktop 2.155.756.0, executado em 1 de setembro de 2026. O modelo tem três tabelas: Vendas com 1.000.000 de linhas, Produto com 8 linhas e Calendario com 1.096 dias. O calendário vai de 1 de janeiro de 2024 a 31 de dezembro de 2026.
Cada venda é sintética e determinística: um gerador com semente fixa distribui os oito produtos por quatro regiões. A tabela Vendas se relaciona com Produto por ProdutoID e com Calendario por Data. Portanto, nenhum número deste artigo foi digitado à mão.
Contexto de linha e contexto de filtro
Contexto de linha é a linha atual que a fórmula enxerga. Contexto de filtro, por outro lado, é o conjunto de valores que sobra depois de todos os filtros: os do visual, os da segmentação e os escritos dentro da própria fórmula. Uma medida sem contexto não tem resultado, porque o motor precisa saber sobre quais linhas calcular.
O erro mais caro de quem começa em DAX é somar duas colunas separadas para depois multiplicar os totais. Parece equivalente a multiplicar linha a linha. No entanto, não é.
No mesmo contexto, sem nenhum filtro aplicado, as duas medidas devolveram isto sobre o milhão de linhas:
O desvio não é arredondamento. O valor errado ficou 998.635,87 vezes maior que o certo, porque SUM colapsa a coluna antes da multiplicação. Em contrapartida, o SUMX percorre linha por linha, multiplica dentro de cada uma e só então soma o conjunto.
Por categoria de produto, direto no visual de tabela do Power BI, a distorção se mantém em cada linha:

Repare que a coluna errada continua plausível dentro de cada categoria, apenas com muitos dígitos a mais. É por isso que o defeito passa despercebido: ele não gera erro nem célula em branco, apenas um número maior. Assim, nada no relatório sinaliza o problema.
CALCULATE: a função que reescreve o contexto de filtro
CALCULATE avalia uma expressão num contexto de filtro modificado. A regra que pega todo mundo está na documentação da Microsoft: quando a coluna já está no contexto, o novo filtro substitui o antigo. Ou seja, ele não se soma ao que já valia.
Compare as duas formas de filtrar lado a lado. Na consulta abaixo, a terceira coluna usa um predicado simples e a quarta usa FILTER sobre a tabela Vendas.
No modo de exibição de consulta DAX do Power BI Desktop, o resultado voltou em 12,2 ms, com quatro colunas e quatro linhas:

Em texto, para quem quiser conferir número a número:
Olhe, por exemplo, as três primeiras linhas da coluna do meio. O contexto dizia Centro-Oeste, Nordeste ou Sudeste. Ainda assim, a medida devolveu o total do Sul em todas elas: 23.121.394.093,59. O predicado Vendas[Regiao] = "Sul" apagou o filtro de região que já estava valendo.
FILTER: quando o predicado simples não serve
Por outro lado, a função FILTER recebe uma tabela e devolve as linhas que passam na condição. Diferente do predicado solto, ela respeita o contexto de filtro que já está valendo e cruza com ele em vez de substituí-lo.
Daí que a última coluna volte em branco fora do Sul. O contexto do visual já tinha restringido Vendas àquela região, então nenhuma linha do Sul sobrou para o FILTER percorrer. No Sul, onde as duas condições coincidem, o valor aparece.
Existe um meio-termo que quebra a intuição. A variante FILTER ( ALL ( Vendas[Regiao] ), Vendas[Regiao] = "Sul" ) devolve 23.121.394.093,59 nas quatro regiões, igual ao predicado. O ALL remove o filtro antes de o FILTER começar a trabalhar.
Em síntese, o critério de decisão é curto. Use predicado quando quiser trocar o filtro de uma coluna. Já o FILTER sobre a tabela serve para restringir dentro do que o usuário selecionou. Para somar sem apagar, por fim, existe o modificador KEEPFILTERS.
ALL: o denominador que ignora o filtro
ALL remove filtros de uma coluna ou de uma tabela inteira. É com ele que se monta o denominador de um percentual: o numerador respeita o filtro do visual. O denominador, por outro lado, ignora tudo e devolve o total geral.
Aplicado por categoria de produto, o resultado sai assim:
O denominador repete 87.875.539.446,88 nas três linhas, ou seja, ele ignora a categoria. É justamente isso que se quer. Sem o ALL, numerador e denominador seriam iguais em cada linha, logo o percentual daria 100% em todas as categorias.
RELATED: puxar a coluna da outra tabela
RELATED busca um valor na tabela do lado “um” da relação, usando a linha atual do lado “muitos”. Ele só funciona onde existe contexto de linha, ou seja, numa coluna calculada ou dentro de um iterador como SUMX.
Depois disso, as cinco primeiras linhas da tabela de fatos ficam assim:
Nenhuma das duas fórmulas menciona a relação. O contexto de linha atravessa o vínculo entre Vendas e Produto sozinho, porque o motor segue a relação ativa do modelo. Por outro lado, cada coluna dessas ocupa memória: com 1 milhão de linhas, o custo é real e permanente.
Onde medir o custo de uma medida DAX
O Performance Analyzer do Power BI Desktop separa o tempo de cada visual em três partes: consulta DAX, exibição do visual e outro. É o caminho, portanto, para descobrir se a lentidão vem da fórmula ou da renderização.
Na gravação de 1 de setembro de 2026, a tabela deste artigo levou 29 ms no total, assim divididos:

Quatro milissegundos para agregar 1 milhão de linhas mostram o que o motor colunar faz com dados comprimidos. O número sozinho, contudo, importa menos que a divisão entre as três partes.
Use a proporção como critério. Quando “Consulta DAX” domina o total, mexa na medida. Quando “Exibição de visual” domina, reduza a quantidade de linhas ou de colunas que o visual pede.
Além disso, trocar a fórmula sem olhar essa divisão costuma consumir tempo sem mudar nada. Para o caminho completo de ajuste, veja o guia de otimização de performance no Power BI.
Transformamos dados brutos em decisões estratégicas e insights.
Construímos dashboards interativos, KPIs e relatórios automatizados integrados às suas fontes de dados existentes.
Conclusão
Em resumo, o DAX roda no Power BI, no Power Pivot do Excel e no Analysis Services. A parte difícil não são as funções: é o contexto. SUMX contra SUM decide se o número está certo; CALCULATE decide qual filtro vale; FILTER decide se você cruza ou substitui.
Quem estuda DAX por lista de funções aprende a sintaxe e continua errando o total. O caminho mais curto é outro: monte um modelo pequeno, escreva a medida dos dois jeitos e compare o resultado. Dessa forma, o erro aparece antes de o relatório chegar à diretoria.
Para levar isso a produção, com modelo, dashboards e integração às fontes que a operação já usa, fale com os especialistas da OpServices.
Perguntas Frequentes
O DAX é exclusivo do Power BI?
Qual a diferença entre medida e coluna calculada em DAX?
Por que a minha medida DAX dá um total diferente da soma das linhas?
SUMX em vez de multiplicar dois totais.