Avaliador de expressões DAX
Cole uma tabela de exemplo, escreva a medida (DIVIDE, CALCULATE, SUMX, FORMAT…) e veja o valor que o Power BI daria, inclusive o vazio e o erro. Sem abrir o Power BI, sem enviar dados.
Expressão
Resultado
Números como 2,5 e datas como 15/01/2024 na tabela são lidos do jeito brasileiro. Célula vazia vira BLANK. A tabela entra no modelo sem relacionamentos: este avaliador roda uma tabela de cada vez.
Para que serve
Para saber o que uma medida devolve, o caminho normal é abrir o Power BI, criar uma medida ou tabela e olhar. Este avaliador responde na hora: DIVIDE(1;0) volta vazio, 1/0 volta infinito, IFERROR pega os dois casos, e a soma de um filtro sem linhas volta vazio, não zero. Serve para tirar dúvida antes de colar a medida no modelo, para conferir resposta de fórum e para testar expressões por script, pela API.
O que está dando mais dor de cabeça (e o que o DAX faz de verdade)
- Dividir por zero.
1/0não dá erro: dá ∞ (e0/0dá NaN).DIVIDE(1;0)dá vazio, eDIVIDE(1;0;0)dá zero. OIFERRORtrata o infinito como erro:IFERROR(1/0;-1)dá -1. - Soma de nada é vazio.
CALCULATE(SUM(Dados[Qtd]); Dados[Produto]="Kiwi")devolve vazio, eCOUNTROWSde zero linhas também. Como o vazio se comporta como zero em+e em=0, o resultado parece certo até você concatenar (o vazio some do texto).COALESCE(…;0)resolve. - Vazio é igual a 0 e a "":
BLANK()=0eBLANK()=""dão verdadeiro. Por issoIF(x=BLANK();"vazio";"cheio")dá "vazio" também quandoxé 0 ou texto vazio. UseISBLANKpara distinguir. - Ponto flutuante.
0,1+0,2=0,3dá falso no DAX, ao contrário do Excel. Compare comROUND. - FORMAT mistura dois idiomas. O formato segue o padrão em inglês e o resultado sai no idioma do modelo:
FORMAT(1234,5;"#,##0.00")devolve 1.234,50. Escrever o formato em português ("#.##0,00") devolve 1234,50000. Já os nomes de mês e de dia saem em português. - ROUND e a conta decimal.
ROUND(1,005;2)dá 1,01 eROUND(2,675;2)dá 2,68 (o DAX arredonda sobre o valor decimal, sem o desvio do binário). - DATEDIFF conta fronteiras. De 31/05 para 01/06, em meses, dá 1, mesmo com um dia de diferença.
- Comparar tipos diferentes dá erro.
1="1"e"a"<1são recusados. Texto compara sem diferenciar maiúsculas:"a"="A"é verdadeiro. - VALUE com ponto.
VALUE("1.5")dá 15 em português, porque o ponto é separador de milhar.
Quanto dá para confiar
Este avaliador não foi escrito a partir da documentação. Cada comportamento foi conferido no motor DAX real do Power BI Desktop, em português do Brasil, executando as expressões de verdade sobre uma tabela de teste: 726 expressões em 12/11/2026, e o resultado de cada uma foi comparado valor por valor, inclusive as 44 que o Power BI recusa ou que dão erro de execução.
O processo foi em três rodadas cegas: a previsão do avaliador era guardada antes de ver o resultado do Power BI. Na primeira tentativa, sem nenhum ajuste, ele acertou 92%, 90% e 94% (261, 325 e 151 expressões). Cada diferença virou uma correção e entrou no teste automático, que repete as comparações a cada alteração. Depois da última correção, o acerto em expressões inéditas ainda não foi medido de novo.
O que ele não faz
- Funções fora da lista. São 97 funções, abaixo. As demais (
RANKX,TOPN,ADDCOLUMNS,SUMMARIZE, inteligência de tempo comoDATESYTD,TODAY,NOW) respondem "não suportada", em vez de chute. Funções que o DAX não tem (STARTSWITH,ENDSWITH) dão o mesmo erro do Power BI. - Sem modelo. Não há relacionamentos nem medidas nomeadas entre colchetes; só uma tabela (ou várias independentes) por consulta.
CALCULATEaceita filtros de coluna,FILTEReALL(tabela). - Ordem das linhas. Ao percorrer uma tabela sem
ORDER BY, como emCONCATENATEX(Dados; …), o Power BI devolve as linhas na ordem interna do armazenamento, que não é a ordem em que você colou. Informe a ordenação. - Tabela como resultado. Aqui uma expressão de tabela mostra a tabela; no Power BI, uma medida exige um único valor.
- Inteiros com mais de 15 dígitos. O DAX guarda inteiros de 64 bits; aqui, acima de 9.007.199.254.740.991 perde precisão.
- Limite de cálculo. Expressões muito pesadas (mais de 1 milhão de passos) são interrompidas.
Funções suportadas
ABS, ALL, AND, AVERAGE, AVERAGEX, BLANK, CALCULATE, CEILING, COALESCE, CONCATENATE, CONCATENATEX, CONTAINSSTRING, COUNT, COUNTA, COUNTBLANK, COUNTROWS, COUNTX, DATE, DATEDIFF, DATEVALUE, DAY, DISTINCT, DISTINCTCOUNT, DISTINCTCOUNTNOBLANK, DIVIDE, EDATE, EOMONTH, EXACT, EXP, FACT, FALSE, FILTER, FIND, FLOOR, FORMAT, HOUR, IF, IFERROR, INT, ISBLANK, ISERROR, ISEVEN, ISLOGICAL, ISNONTEXT, ISNUMBER, ISODD, ISTEXT, LEFT, LEN, LN, LOG, LOG10, LOOKUPVALUE, LOWER, MAX, MAXX, MID, MIN, MINUTE, MINX, MOD, MONTH, MROUND, NOT, OR, PI, POWER, QUARTER, QUOTIENT, REPLACE, REPT, RIGHT, ROUND, ROUNDDOWN, ROUNDUP, SEARCH, SECOND, SELECTEDVALUE, SIGN, SQRT, SUBSTITUTE, SUM, SUMX, SWITCH, TIME, TIMEVALUE, TRIM, TRUE, TRUNC, UNICHAR, UNICODE, UPPER, VALUE, VALUES, WEEKDAY, WEEKNUM, YEAR
Usar por API
GET https://meajudaflow.com.br/api/v1/avaliar-dax?formula=DIVIDE(1,0,-1)
POST https://meajudaflow.com.br/api/v1/avaliar-dax
{"formula": "SUMX(Vendas, Vendas[Qtd] * Vendas[Preco])",
"tabelas": {"Vendas": [["Qtd","Preco"],[10,2.5],[5,"1,2"]]}}
A resposta traz ok, valor, texto e tipo. Quando o Power BI daria erro, erroDax traz a mensagem; quando a expressão não é aceita, ok é falso. Tabelas vão como lista de linhas (a primeira é o cabeçalho) ou texto com tabulações; textos como "1,2" são lidos como número. Limites: expressão de até 4.000 caracteres, até 10 tabelas, 20.000 células e 64 KB. Sem chave; peço só que não use para carga contínua.
Privacidade
Na página, a avaliação roda no seu navegador e nada é enviado. Só a API recebe o que você mandar, e ela não grava nada.
Perguntas frequentes
Isso substitui testar no Power BI?
Não. Ele ajuda a entender uma expressão isolada. Modelos reais têm relacionamentos, contexto de filtro dos visuais e dados grandes. Teste lá o que importa.
E no Excel, no Power Apps ou no Power Automate?
São outras linguagens: veja o avaliador do Excel, o avaliador de Power Fx e o avaliador do Power Automate. Para as dúvidas de DAX mais comuns, veja também a referência de DAX.