fx

DAX

Prompts para DAX

Modelos de prompt para escrever DAX com IA no padrão AV/AA/Δ%, com código pronto para a DAX Query View e dicas para o Copilot.

A IA escreve DAX melhor quando recebe o modelo, o objetivo e o formato de entrega. Este guia mostra o que pôr no prompt e como pedir o código já no padrão da casa, pronto para testar na DAX Query View.

1. Anatomia do prompt eficaz

ComponenteO que incluirExemplo
1. ModeloTabelas, colunas, tipos e relacionamentos"TabFatVenda (Data, CodigoProduto, ValorVenda); TabDimCalendario[Data Referência] marcada como Tabela de Datas, 1 → * com TabFatVenda[Data]"
2. ObjetivoO que a medida calcula, com nome de negócio"Medida Total de Vendas AV: soma de ValorVenda no período filtrado"
3. RestriçõesFiltros, exceções e tratamento de vazio"Ignore pedidos cancelados; mês sem venda fica em branco, não em 0"
4. UsoOnde a medida aparece"Matriz com Categoria nas linhas e mês nas colunas"
5. Padrão da casaNomes, VAR, DIVIDE e formato de entregaCole o bloco da seção 2
6. Resultado esperadoUm valor conhecido para conferir"Bebidas em abril de 2026 deve dar 50.000"

2. Bloco "padrão da casa"

Cole este bloco no fim de qualquer prompt. Ele evita as correções mais comuns: divisão que devolve 0, variação em texto, nomes em inglês e código que não roda na DAX Query View.

Padrões obrigatórios:
- Nomes de medida em português de negócio, sem prefixo técnico.
- Comparação de períodos: sufixos AV (período atual) e AA (mesmo período
  do ano anterior) e prefixos Δ (AV − AA), Δ% (Δ ÷ AA) e Δi (farol:
  ✔️ alta, ⚠️ estável, ❗ queda).
- Contagens com prefixo # (ex.: # Clientes).
- Variáveis com prefixo v (ex.: vTotal, vAA).
- DIVIDE sem valor alternativo: sem denominador, o resultado é BLANK,
  nunca 0.
- A medida devolve número. Formato, seta e cor ficam na formatação
  condicional ou na cadeia de formato dinâmica, e não em FORMAT.
- Use só funções da referência DAX da Microsoft (learn.microsoft.com/dax).
- Entregue um único bloco para a DAX Query View: DEFINE com um MEASURE
  por medida, uma descrição em /// acima de cada uma, e EVALUATE com
  SUMMARIZECOLUMNS por [COLUNA DE TESTE] para eu conferir o resultado.
  • 💡 Na DAX Query View, Executar (F5) mostra o resultado e Atualizar o modelo com alterações grava as medidas no modelo, já com a descrição escrita em ///.

3. Modelos de prompt

Troque o que está entre [colchetes]. Nos exemplos, o modelo é o mesmo do Cookbook: TabFatVenda, TabDimProduto, TabDimCliente e TabDimCalendario gerada pela UDF DataHora.Calendario.

Medida simples:

Modelo:
- TabFatVenda: Data (data), CodigoProduto (texto), ValorVenda (decimal)
- TabDimProduto: CodigoProduto, NomeProduto, Categoria; 1 → * com TabFatVenda
- TabDimCalendario[Data Referência], marcada como Tabela de Datas;
  1 → * com TabFatVenda[Data]

Crie a medida [NOME DE NEGÓCIO] que [OBJETIVO].
Condições:
- [CONDIÇÃO 1]
- [CONDIÇÃO 2]
Uso: [VISUAL E EIXOS].
Resultado esperado: [VALOR CONHECIDO PARA CONFERIR].

[BLOCO PADRÃO DA CASA]

Comparação com o ano anterior:

Modelo: [MODELO, como no modelo anterior].
Crie as medidas [MÉTRICA] AV, [MÉTRICA] AA, Δ [MÉTRICA], Δ% [MÉTRICA]
e Δi [MÉTRICA], usando SAMEPERIODLASTYEAR sobre
TabDimCalendario[Data Referência].
- Δ% é número, formatado como percentual na própria medida.
- Sem AA, Δ% e Δi ficam em branco. Mês sem venda no AV também.
Teste por TabDimCalendario[Ano] e TabDimCalendario[Mês #].

[BLOCO PADRÃO DA CASA]

Resposta esperada, que já roda na DAX Query View:

DEFINE
    /// Vendas do período filtrado.
    MEASURE TabFatVenda[Total de Vendas AV] =
        SUM ( TabFatVenda[ValorVenda] )

    /// Vendas do mesmo período no ano anterior.
    MEASURE TabFatVenda[Total de Vendas AA] =
        CALCULATE (
            [Total de Vendas AV],
            SAMEPERIODLASTYEAR ( TabDimCalendario[Data Referência] )
        )

    /// Variação absoluta AV − AA. Em branco quando não há venda no AV.
    MEASURE TabFatVenda[Δ Total de Vendas] =
        VAR vAV = [Total de Vendas AV]
        RETURN
            IF ( NOT ISBLANK ( vAV ), vAV - [Total de Vendas AA] )

    /// Variação percentual sobre o AA. Em branco sem AV ou sem AA.
    MEASURE TabFatVenda[Δ% Total de Vendas] =
        DIVIDE ( [Δ Total de Vendas], [Total de Vendas AA] )

    /// Farol da variação: ✔️ alta, ⚠️ estável, ❗ queda.
    MEASURE TabFatVenda[Δi Total de Vendas] =
        VAR vVariacao = [Δ% Total de Vendas]
        RETURN
            SWITCH (
                TRUE (),
                ISBLANK ( vVariacao ), BLANK (),
                vVariacao > 0, "✔️",
                vVariacao = 0, "⚠️",
                "❗"
            )

EVALUATE
SUMMARIZECOLUMNS (
    TabDimCalendario[Ano],
    TabDimCalendario[Mês #],
    "AV", [Total de Vendas AV],
    "AA", [Total de Vendas AA],
    "Δ", [Δ Total de Vendas],
    "Δ%", [Δ% Total de Vendas],
    "Δi", [Δi Total de Vendas]
)
ORDER BY TabDimCalendario[Ano], TabDimCalendario[Mês #]
  • ⚠️ SAMEPERIODLASTYEAR exige o calendário marcado como Tabela de Datas. Para o acumulado no ano, veja o caso 1 do Cookbook.

Cálculo condicional:

Situação de negócio: [CENÁRIO].
Modelo:
- [TABELA A]: [colunas]
- [TABELA B]: [colunas]
- Relacionamento: [COMO SE LIGAM]
Regras, na ordem de prioridade:
1. Se [CONDIÇÃO 1], então [RESULTADO 1]
2. Se [CONDIÇÃO 2], então [RESULTADO 2]
3. Nos demais casos, [RESULTADO PADRÃO]
Use SWITCH ( TRUE (), ... ) com as condições nessa ordem e comente cada
uma. Teste por [COLUNA].

[BLOCO PADRÃO DA CASA]

Correção de medida:

A medida abaixo retorna [RESULTADO ERRADO] para [CONTEXTO, ex.: Bebidas
em abril de 2026]. O valor certo é [VALOR ESPERADO].

[COLE A MEDIDA]

1. Explique a causa do erro.
2. Devolva um bloco para a DAX Query View com a medida original e a
   corrigida (sufixo " Corrigida") lado a lado no EVALUATE, filtrado
   no contexto acima.
3. Explique o que mudou e por quê.

4. Técnicas de prompt

Passo a passo antes do código — pedir a lógica em português antes do DAX reduz erros de lógica:

"Antes de escrever o DAX, explique em português, sem código, cada etapa do cálculo. Depois converta cada etapa numa VAR."

Autorrevisão — pedir que a IA revise o próprio resultado:

"Revise a medida e aponte: (1) casos não tratados (BLANK, divisão por zero, período sem dado, período futuro), (2) partes que o filtro de um visual muda sem você querer, (3) o que dá para simplificar. Corrija e devolva o bloco completo para a DAX Query View."

Analogia — para entender uma função nova:

"Explique CALCULATE com uma analogia do dia a dia e depois mostre um exemplo com as tabelas do meu modelo."

Construção em etapas — do simples ao completo:

Prompt 1: "Crie a versão mais simples de [OBJETIVO]."
Prompt 2: "Agora considere só [CONDIÇÃO]."
Prompt 3: "Agora acrescente o AA, o Δ% e o Δi no padrão da casa."

5. Prompts por cenário

Performance:

"Esta medida está lenta numa tabela de 50 milhões de linhas: [MEDIDA]. Reescreva usando variáveis para não repetir cálculos e predicados de coluna no CALCULATE no lugar de FILTER sobre a tabela inteira. Explique cada mudança e devolva as duas versões no mesmo bloco da DAX Query View para eu comparar o tempo."

Várias tabelas:

"Modelo estrela: TabFatVenda ligada a TabDimProduto, TabDimCliente, TabDimLoja e TabDimCalendario pelas colunas Codigo*. TabDimCliente tem UF; TabDimLoja tem DataAbertura. Crie Total de Vendas por Categoria para clientes de SP, só lojas abertas há mais de 12 meses, nos últimos 6 meses até a última venda. [BLOCO PADRÃO DA CASA]"

Estatística — dias fora da curva:

"Crie uma consulta para a DAX Query View que liste, por TabDimCalendario[Data Referência], Total de Vendas, a média diária, o desvio-padrão e um sinalizador de outlier (mais de 2 desvios da média). Média e desvio devem usar todos os dias do período, e não só a linha. Ordene pela data."

  • 💡 O resultado é uma tabela, então o pedido é uma consulta (EVALUATE), e não uma medida. Uma medida sempre devolve um único valor; para o relatório, peça a medida do sinalizador e use-a num visual de tabela.

Número abreviado (K, M) sem virar texto:

"A medida Total de Vendas deve aparecer como 950, 45,2 K ou 1,2 M, conforme o tamanho, e continuar numérica nos gráficos. Use uma cadeia de formato dinâmica com SELECTEDMEASURE, e não FORMAT."

Na medida, em Formato › Dinâmico, cole a expressão de formato:

-- Cadeia de formato dinâmica: a medida continua numérica
VAR vValor = ABS ( SELECTEDMEASURE () )   -- ABS: negativos usam a mesma faixa
RETURN
    SWITCH (
        TRUE (),
        vValor < 1000, "#,##0",            -- até 999: sem sufixo
        vValor < 1000000, "#,##0,.0 K",    -- uma vírgula antes do ponto divide por mil
        "#,##0,,.0 M"                      -- duas vírgulas dividem por um milhão
    )
  • ⚠️ FORMAT devolve texto: o gráfico perde o eixo numérico e um valor em branco vira texto vazio. A cadeia de formato dinâmica mantém o número.
  • ⚠️ Se o visual mostrar a unidade duas vezes, mude Unidades de exibição de Automático para Nenhum.

6. IA dentro do Power BI: Copilot na DAX Query View

O Copilot da DAX Query View escreve e explica consultas DAX no modelo aberto. No Power BI Desktop, habilite-o em Opções › Recursos de visualização, abra uma aba de consulta e pressione Ctrl + I.

O que saberEfeito no prompt
Exige workspace com capacidade do FabricSem ela, use um assistente externo com as regras da seção 2
Usa os metadados do modelo (tabelas, colunas, medidas), não os dados; no modo Import pode ler mínimo e máximoNomes de negócio claros valem mais que um prompt longo
Lê só os primeiros 200 caracteres da descriçãoComece a descrição pelo que a medida calcula
A sintaxe gerada é verificada; se falhar, o pedido é repetido uma vezMesmo assim, execute (F5) antes de manter a consulta
Funções DAX recentes podem ser desconhecidasConfira a função na referência da Microsoft
Envia todo o texto da aba de consulta atualAbra uma aba só com o que interessa ao pedido

Prompts que funcionam bem no Copilot:

"Escreva uma consulta DAX com Total de Vendas AV, Total de Vendas AA e Δ% Total de Vendas por Categoria em 2026, ordenada pelo Δ%."

"Explique o que esta consulta faz." (com a consulta selecionada)

Descrições que ajudam a IA: escreva a descrição em /// acima de cada MEASURE e grave com Atualizar o modelo com alterações. A descrição vai para o modelo, aparece ao passar o mouse sobre a medida e é lida pelo Copilot. O exemplo abaixo usa as medidas AA e Δ da seção 3, já gravadas no modelo.

DEFINE
    /// Variação percentual das vendas sobre o mesmo período do ano anterior.
    /// Em branco quando não há venda no AA.
    MEASURE TabFatVenda[Δ% Total de Vendas] =
        DIVIDE ( [Δ Total de Vendas], [Total de Vendas AA] )

EVALUATE
SUMMARIZECOLUMNS ( TabDimCalendario[Ano], "Δ%", [Δ% Total de Vendas] )

Assistente externo ligado ao modelo: com MCP, um assistente como o Claude lê e altera o modelo aberto no Power BI Desktop. Veja a configuração em /dax/mcp.

  • ⚠️ Privacidade: o Copilot segue as regras de privacidade e segurança do Copilot no Fabric. Num assistente externo, envie metadados (nomes, tipos, medidas) e não linhas de dados de clientes, a menos que a política da empresa permita.

7. Erros comuns e prompt de diagnóstico

ErroSintomaPrompt para diagnóstico
Dependência circularErro "circular dependency""Por que esta medida ou coluna causa dependência circular? [CÓDIGO]"
Transição de contextoColuna calculada mostra o mesmo total em todas as linhas"Esta coluna calculada repete o total em todas as linhas. Explique a transição de contexto e corrija."
BLANK ou 0Linhas somem do visual, ou aparece 0 onde não há dado"Esta medida devolve [BLANK/0] em [CONTEXTO]. Explique quando o DAX devolve BLANK e ajuste para [COMPORTAMENTO ESPERADO]."
Filtro ignoradoTotal não muda com a segmentação"A medida ignora a segmentação de [COLUNA]. Analise o uso de ALL, REMOVEFILTERS e ALLSELECTED e corrija."
LentidãoVisual demora mais de 5 s"Por que esta medida é lenta? Aponte os trechos caros e proponha a versão otimizada. [MEDIDA]"

8. Glossário

TermoO que éQuando usar
Few-shotDar 2 ou 3 exemplos de entrada e saída antes do pedidoImpor um padrão de nomes ou de estrutura
Zero-shotPedir sem exemplosFunções e cálculos comuns
Passo a passoPedir o raciocínio antes do códigoLógica com várias condições
Papel"Aja como especialista em DAX e modelagem"Revisão e boas práticas
RestriçãoListar o que é obrigatório ("DIVIDE sem alternativo", "só funções da referência Microsoft")Forçar o padrão da casa
RefinamentoAjustar em várias rodadasMedidas com muitos requisitos
Prompt negativoDizer o que não fazer ("não use FORMAT para formatar número")Evitar um erro conhecido

9. Checklist

Antes de enviar o prompt:

  • Incluí os nomes exatos das tabelas e colunas e os relacionamentos?
  • Dei um resultado esperado com valor conhecido?
  • Disse o que fazer com vazio: BLANK, e não 0?
  • Disse onde a medida será usada (visual e eixos)?
  • Colei o bloco do padrão da casa?

Depois de receber o código:

  • Rodei o bloco na DAX Query View e conferi o valor conhecido?
  • Testei período sem dado, período futuro e denominador zero?
  • Conferi que cada função existe na referência DAX da Microsoft?
  • Conferi o resultado com segmentações e filtros?
  • Gravei as medidas com a descrição em ///?

Atenção: nunca publique uma medida gerada por IA sem testá-la. O código pode rodar e ainda assim devolver o número errado. Confira com um valor conhecido antes de publicar.

Fontes