Power BI e DAX

DAX mudou de vez: o que são as User-Defined Functions e por que você vai querer usar

Entenda como as User-Defined Functions tornam o DAX mais reutilizável, organizado e pronto para modelos semânticos colaborativos no Power BI.

Artigo publicado

Renan Brognoli

2026-06-165 minPower BI

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:

dax
DEFINE
    FUNCTION NomeDaFuncao = ( parametro : TIPO ) => expressão

Um exemplo concreto: uma função que adiciona imposto a um valor.

dax
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 110

Note 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.