· PYO Tecnologia · Power BI · 3 min de leitura
DAX Lento? 5 Técnicas de Otimização que Salvam Dashboards
Seus usuários reclamam que o relatório demora para carregar? O problema provavelmente está no seu DAX. Veja como otimizar medidas complexas.

Você já passou por isso: o dashboard está lindo, o design está impecável, mas quando o usuário clica em um filtro… a rodinha gira. E gira. E gira.
Performance em Power BI não é sorte, é engenharia. E 90% dos problemas de performance residem em DAX mal escrito ou modelagem ineficiente.
Hoje, vamos focar no DAX. Aqui estão 5 técnicas essenciais para reduzir drasticamente o tempo de renderização de relatórios.
1. Evite FILTER em Tabelas Inteiras
Este é o erro número 1.
// RUIM: Itera sobre toda a tabela de Vendas (milhões de linhas)
Total Vendas Vermelho =
CALCULATE(
[Total Vendas],
FILTER(Vendas, Vendas[Cor] = "Vermelho")
)O FILTER é um iterador. Quando você passa a tabela Vendas inteira, ele vai linha por linha.
// BOM: Itera apenas sobre a coluna de cores (algumas dezenas de linhas)
Total Vendas Vermelho =
CALCULATE(
[Total Vendas],
KEEPFILTERS(Vendas[Cor] = "Vermelho")
)2. Use Variáveis (VAR)
Variáveis não são apenas para legibilidade. Elas calculam o resultado uma vez e o armazenam em cache para uso dentro da medida.
// RUIM: Calcula [Total Vendas] duas vezes
Crescimento =
IF(
[Total Vendas] > 1000,
[Total Vendas] * 1.1,
[Total Vendas]
)
// BOM: Calcula uma vez
Crescimento =
VAR VendasAtuais = [Total Vendas]
RETURN
IF(
VendasAtuais > 1000,
VendasAtuais * 1.1,
VendasAtuais
)3. Cuidado com a Bi-Direcionalidade
Relacionamentos bi-direcionais (Both) no modelo de dados podem destruir a performance e criar ambiguidade. Sempre que possível, mantenha relacionamentos 1:* (um para muitos) e use CROSSFILTER no DAX se precisar propagar filtro no sentido oposto apenas para uma medida específica.
4. DIVIDE vs /
A função DIVIDE é “safe divide”, tratando divisão por zero automaticamente. Mas ela tem um custo. Se você tem certeza absoluta que o denominador nunca será zero (ex: contagem de dias num mês), o operador / é ligeiramente mais rápido.
Porém, na dúvida, fique com o DIVIDE pela segurança. A otimização aqui é: não use IF(Denominador = 0, 0, Numerador / Denominador). O DIVIDE já faz isso de forma otimizada.
5. Reduza a Cardinalidade
Isso é modelagem, mas afeta o DAX. Se você tem uma coluna DateTime (ex: 01/01/2025 14:32:15) e usa ela em relacionamentos ou filtros, a cardinalidade é altíssima.
Quebre em duas colunas: Data e Hora. Ou melhor, se não precisa do segundo, arredonde para a hora ou minuto. Menor cardinalidade = motor VertiPaq mais feliz = DAX mais rápido.
Seu Power BI está lento demais? Performance é crucial. Uma auditoria completa de modelos e DAX pode transformar a experiência do usuário. Conheça nossa consultoria em Power BI ou agende um diagnóstico.


