Guia de Prompts para DAX com IA
1. Anatomia do prompt eficaz
Um prompt eficaz para DAX tem 6 componentes:
| Componente | O que incluir | Exemplo |
|---|---|---|
| 1. Contexto do modelo | Nomes de tabelas e colunas relevantes | "TabVendas com colunas: Data (date), Produto (text), Valor (decimal)" |
| 2. Objetivo claro | O que a fórmula deve calcular | "Quero calcular o total de vendas acumulado no mês" |
| 3. Restrições | Filtros, condições ou exceções | "Apenas produtos com Valor > 0, ignore cancelamentos" |
| 4. Contexto de uso | Onde a fórmula será usada | "É uma medida usada em gráfico de linhas com eixo de datas" |
| 5. Padrão de código | Boas práticas esperadas | "Use VAR para todas as variáveis intermediárias" |
| 6. Exemplo esperado | Input/output de referência | "Para abril 2024 com R$50.000 em vendas, deve retornar 50000" |
2. Templates prontos
Adapte as partes entre [colchetes] para o contexto.
Medida simples:
"Tenho uma tabela [NOME_TABELA] com as colunas:
- [COLUNA1]: [tipo e descrição]
- [COLUNA2]: [tipo e descrição]
Crie uma medida DAX que [OBJETIVO].
Condições importantes:
- [CONDIÇÃO 1]
- [CONDIÇÃO 2]
Use VAR para variáveis intermediárias e DIVIDE com 0 como valor
alternativo para divisões. Comente cada VAR explicando o que ela
calcula."
Comparação temporal:
"Tenho [MODELO DO DADOS] com uma tabela Calendario relacionada.
Crie 3 medidas DAX para análise temporal:
1. Valor do período atual: [MÉTRICA BASE]
2. Mesmo período [ano/mês] anterior
3. Variação percentual (use símbolo ▲ se positivo, ▼ se negativo)
Formato da variação: '▲ 12.5%' ou '▼ 3.2%'
Retorne 'N/D' quando não houver período anterior."
Cálculo condicional complexo:
"Situação de negócio: [DESCRIÇÃO DO CENÁRIO]
Tabelas envolvidas:
- [TABELA A]: [colunas relevantes]
- [TABELA B]: [colunas relevantes]
Relacionamento: [COMO ESTÃO RELACIONADAS]
Lógica de negócio:
- Condição 1: [SE ISSO → ENTÃO AQUILO]
- Condição 2: [SE AQUILO → ENTÃO ISSO]
- Caso padrão: [RETORNO PADRÃO]
Crie uma medida usando SWITCH(TRUE(), ...) e explique cada condição.
Nível de complexidade esperado: [BÁSICO/INTERMEDIÁRIO/AVANÇADO]"
Debugging de fórmula:
"A seguinte medida DAX está retornando [RESULTADO INCORRETO]:
[COLE A FÓRMULA AQUI]
O resultado esperado é [RESULTADO ESPERADO].
Contexto de teste: [EXEMPLO ESPECÍFICO COM DADOS]
Por favor:
1. Identifique o erro
2. Explique por que está errado
3. Forneça a versão corrigida
4. Explique o que mudou e por quê"
3. Técnicas avançadas de prompting
Chain-of-Thought (passo a passo) — pedir para a IA explicar a lógica antes de escrever código reduz erros de lógica:
"Antes de escrever a fórmula DAX, explique em português (sem código) qual é a lógica de cada etapa do cálculo. Depois, converta essa lógica em DAX usando VAR para cada etapa."
Self-Critique (auto-crítica) — pedir para a IA revisar o próprio resultado:
"Agora revise a fórmula que você criou e identifique: (1) possíveis problemas de performance, (2) casos extremos não tratados (BLANK, divisão por zero, filtros vazios), (3) oportunidades de simplificação. Corrija todos os problemas encontrados."
Analogias para explicação — útil para entender uma função nova:
"Explique o funcionamento da função CALCULATE usando uma analogia do mundo real — algo como receitas de culinária, viagens ou esportes. Depois mostre o exemplo técnico."
Variações progressivas — construir a fórmula incrementalmente:
// Prompt 1 (base): "Crie a versão mais simples possível de [OBJETIVO]"
// Prompt 2 (adicionar filtro): "Agora adicione um filtro para considerar apenas [CONDIÇÃO]"
// Prompt 3 (adicionar complexidade): "Agora faça a fórmula calcular isso para o período atual vs. período anterior"
4. Prompts por cenário
Performance e otimização:
"Esta fórmula está lenta em um modelo com 50 milhões de linhas: [FÓRMULA]. Reescreva usando técnicas de otimização DAX: evite iteradores desnecessários, substitua FILTER por predicados diretos no CALCULATE, e use variáveis para evitar recálculos. Explique cada otimização."
Múltiplas tabelas e relacionamentos:
"Tenho um modelo estrela com: FactVendas, DimProduto, DimCliente, DimCalendario e DimLoja. Relacionamentos: FactVendas[ProdutoID] → DimProduto[ID], etc. Crie uma medida que calcule o faturamento por categoria de produto para clientes do estado de SP, apenas lojas com mais de 12 meses de operação, nos últimos 6 meses."
Análises estatísticas:
"Preciso de uma medida DAX que calcule o desvio padrão das vendas diárias e identifique dias que estão a mais de 2 desvios padrões da média (outliers). Retorne uma tabela com: Data, Valor, Média, Desvio Padrão e Flag de Outlier."
Formatação dinâmica:
"Crie uma medida que formata automaticamente os valores: se < 1000, mostre como número; se < 1.000.000, mostre como K (ex: 45.2K); se < 1.000.000.000, mostre como M (ex: 1.2M); senão como B. Use FORMAT e divisões condicionais."
// Resultado esperado:
Valor Formatado =
VAR V = SUM(TabVendas[Valor])
RETURN
SWITCH(
TRUE(),
V < 1000, FORMAT(V, "0.##"),
V < 1000000, FORMAT(V / 1000, "0.0") & "K",
V < 1000000000, FORMAT(V / 1000000, "0.0") & "M",
FORMAT(V / 1000000000, "0.00") & "B"
)
5. Erros comuns e prompt de diagnóstico
| Erro comum | Sintoma | Prompt para diagnóstico |
|---|---|---|
| Circular Reference | Erro "circular dependency" | "Por que esta medida causa dependência circular? [FÓRMULA]" |
| Context Transition | Valor errado em contexto de linha | "Esta medida retorna valor incorreto em colunas calculadas. Explique context transition e corrija." |
| BLANK vs. 0 | Valores em branco inesperados | "A medida retorna BLANK quando esperava 0. Explique quando BLANK aparece em DAX e corrija." |
| Filtros não removidos | Total ignorando slicer | "A medida ignora os filtros do slicer. Analise o uso de ALL e ALLSELECTED e sugira a correção." |
| Performance lenta | Relatório demora >5s | "Por que esta medida é lenta? Identifique anti-padrões e proponha otimizações. [FÓRMULA]" |
6. Glossário de engenharia de prompts para DAX
| Termo | Definição | Quando usar |
|---|---|---|
| Few-Shot | Fornecer 2-3 exemplos de input/output antes do pedido principal | Fórmulas com padrão específico de nomenclatura |
| Zero-Shot | Pedir sem exemplos, deixando a IA usar conhecimento geral | Funções padrão do DAX |
| Chain-of-Thought | Pedir raciocínio passo a passo antes do código | Lógica complexa com múltiplas condições |
| Role-Playing | "Aja como um especialista DAX com X anos..." | Otimização e boas práticas |
| Constraint Prompting | Listar restrições explícitas ("Não use FILTER, não use SUMX") | Forçar uma abordagem específica |
| Iterative Refinement | Refinar a fórmula em múltiplas rodadas de feedback | Fórmulas complexas com muitos requisitos |
| Negative Prompting | Dizer o que NÃO fazer ("Não use CALCULATE dentro de iteradores") | Evitar anti-padrões conhecidos |
7. Checklist do analista DAX com IA
Antes de enviar o prompt:
- Incluí os nomes exatos das tabelas e colunas?
- Descrevi o resultado esperado com um exemplo concreto?
- Especifiquei como lidar com valores nulos/em branco?
- Mencionei em qual contexto a medida será usada (visual, coluna, tabela)?
- Pedi boas práticas (VAR, comentários, DIVIDE com alternativo)?
Depois de receber a fórmula:
- Testei com dados conhecidos (dados de exemplo com resposta esperada)?
- Testei com valores extremos (zero, BLANK, datas inexistentes)?
- Analisei o impacto de performance (quantas linhas a tabela tem)?
- Verifiquei se o resultado muda corretamente com slicers e filtros?
- Documentei a fórmula com comentários para manutenção futura?
Atenção: nunca publique uma fórmula gerada por IA sem testá-la. A IA pode gerar fórmulas sintaticamente corretas mas semanticamente erradas — a fórmula "roda" mas produz um resultado incorreto. Sempre valide com dados conhecidos antes de publicar relatórios em produção.
Nota de curadoria
Conteúdo metodológico autoral (técnicas de prompt engineering, não afirmações sobre produtos ou sobre a linguagem DAX) — sem necessidade de validação externa. Removida do original a seção especulativa "O Futuro: IA + DAX em 2025 e Além" (previsões sobre Copilot, Azure OpenAI etc.) — esse tipo de prognóstico fica desatualizado rápido e não se encaixa no tom de referência seca da Biblioteca; se a equipe quiser uma seção equivalente, vale escrevê-la à parte com data de corte explícita.