Se você trabalha com Power BI há algum tempo, sabe que DAX tem uma característica irritante: você escreve a mesma lógica umas dez vezes, em medidas diferentes, e reza para não ter cometido nenhum erro em pelo menos nove delas.
Com a atualização de junho de 2026, a Microsoft finalizou a disponibilidade geral das User-Defined Functions (UDFs) no DAX. Esse recurso estava em preview desde setembro de 2025 e agora chegou com tudo: suporte no Power BI Desktop, no serviço web e integração com ferramentas como SSMS e Git.
A promessa é simples. Você define uma função uma vez. Usa ela em qualquer lugar do modelo.
O problema que as UDFs resolvem
Imagine que você precisa calcular o valor com imposto em vários lugares do seu modelo semântico. A lógica é sempre a mesma: valor multiplicado por uma alíquota. Até aí, tudo bem.
O problema começa quando a alíquota muda. Você vai precisar atualizar cada medida, cada coluna calculada, cada cálculo visual que usava essa fórmula. Se tiver sorte, lembra de todos. Se não tiver, o relatório vai apresentar números inconsistentes.
As UDFs encerram essa história. Você centraliza a lógica em um único lugar. Quando a regra muda, muda em um ponto só.
Como funciona na prática
A sintaxe introduz uma nova palavra-chave: FUNCTION. O formato básico é esse:
DEFINE
FUNCTION NomeDaFuncao = ( parametro : TIPO ) => expressãoUm exemplo concreto: uma função que adiciona imposto a um valor.
DEFINE
/// AddTax recebe um valor e retorna o total com imposto
/// @param {NUMERIC} amount - Valor sem imposto
/// @param {NUMERIC} [taxRate] - Alíquota opcional, padrão 10%
/// @returns Valor total com imposto aplicado
FUNCTION AddTax =
( amount : NUMERIC, taxRate : NUMERIC = 0.1 ) =>
amount * ( 1 + taxRate )
EVALUATE
{ AddTax ( 100 ) }
-- Retorna 110Note o parâmetro taxRate com valor padrão. Isso é um dos recursos novos do GA: parâmetros opcionais. Você pode chamar AddTax(100) e a função assume 10% automaticamente, ou passar AddTax(100, 0.15) quando precisar de 15%.
Onde você pode usar as UDFs
Uma vez salva no modelo, a função fica disponível como qualquer outra função DAX nativa. Você pode usá-la em:
- Medidas
- Colunas calculadas
- Cálculos visuais
- Outras funções definidas pelo usuário
Essa última possibilidade é interessante. Você pode compor funções. Uma função de margem bruta pode chamar internamente uma função de custo ajustado. O modelo fica modular.
Onde criar e editar as funções
A Microsoft disponibilizou três caminhos para trabalhar com UDFs:
DAX Query View: É onde você define, testa e salva funções no modelo. Tem botão de "Update model with changes" para salvar de vez. O IntelliSense já reconhece as funções definidas.
TMDL View: Para quem prefere trabalhar com arquivos de definição. As UDFs ficam salvas como arquivos TMDL e podem ser versionadas via Git. Ótimo para times que trabalham colaborativamente no mesmo modelo.
Model Explorer: Você encontra as funções criadas em um nó dedicado chamado "Functions". Dá para criar, editar e acompanhar dependências por lá.
A conexão com o Copilot
Um detalhe que a Microsoft enfatizou bastante: UDFs são objetos de primeira classe no modelo semântico. Elas têm assinatura tipada, descrição e parâmetros documentados.
Isso significa que ferramentas de IA, como o Copilot, conseguem descobrir e invocar essas funções com muito mais precisão do que tentando inferir lógica DAX de medidas genéricas. Em vez de o Copilot tentar adivinhar como calcular sua margem, você expõe explicitamente uma função CalcularMargem com documentação clara.
Para quem está investindo em automação e IA dentro do Power BI, isso muda bastante o jogo.
Requisitos técnicos
Antes de sair criando funções, um aviso: as UDFs exigem nível de compatibilidade de banco de dados 1702 ou superior. Modelos mais antigos podem precisar de atualização.
No Power BI Desktop de junho de 2026 em diante, o recurso vem habilitado por padrão. No SSMS, o suporte começa a partir da versão 22.5.
Vale a pena adotar agora?
Para modelos novos, a resposta é direta: sim. Comece usando UDFs para qualquer lógica que se repete. Margem, impostos, conversão de moeda, regras comerciais. Tudo que você escreveria mais de uma vez vira candidato a função.
Para modelos legados, o processo é mais gradual. Não compensa refatorar tudo de uma vez. Mas à medida que você precisar ajustar cálculos existentes, vale centralizar a lógica em funções.
O DAX sempre teve poder. Agora tem organização.
Fontes: Microsoft Power BI June 2026 Feature Summary, documentação oficial Microsoft Learn (DAX User-Defined Functions Best Practices), Microsoft Fabric Community.
