DAX Query View — Guia de Uso
DAX Query View — Guia de Uso
1. Como acessar
| Ferramenta | Como acessar |
|---|---|
| Power BI Desktop | Painel esquerdo → ícone de tabela com símbolo DAX (disponível desde novembro/2023) |
| Tabular Editor 3 | File → New → DAX Query, ou atalho de barra de ferramentas |
| DAX Studio (gratuito) | File → Connect → Power BI Desktop → nova query |
| Power BI Service | Semantic Model → DAX Query (Preview — requer workspace Premium/PPU) |
Confirmado: o DAX Query View chegou ao Power BI Desktop em preview público no lançamento de novembro de 2023 (blog oficial do Power BI).
2. Barra de fórmulas vs. DAX Query View
| Aspecto | Barra de Fórmulas | DAX Query View |
|---|---|---|
| Objetivo | Definir medidas e colunas | Consultar e explorar dados |
| Retorna | Escalar (número, texto, data) | Tabela (linhas e colunas) |
| Palavra-chave | SUM(tabela[col]) | EVALUATE + expressão de tabela |
| Testa contra dados? | Só no visual | Diretamente, com resultado real |
| Salva no modelo? | Sim — a medida persiste | Não — só para análise |
Suporta DEFINE? | Não | Sim — variáveis e medidas temporárias |
| Ideal para | Produção — publicar métricas | Desenvolvimento, debugging, documentação |
3. Anatomia de uma query DAX
Uma query completa tem até 4 partes: DEFINE (opcional), EVALUATE
(obrigatório), ORDER BY (opcional) e START AT (opcional):
DEFINE
// Variáveis globais (disponíveis em todo o EVALUATE)
VAR vDataInicio = DATE(2024, 1, 1)
VAR vDataFim = DATE(2024, 12, 31)
// Medida temporária (não salva no modelo)
MEASURE fVendas[Fat Periodo] =
CALCULATE(
SUM(fVendas[Valor]),
dCalendario[Data] >= vDataInicio &&
dCalendario[Data] <= vDataFim
)
// Tabela temporária
TABLE tRegioesSul =
FILTER(dRegioes, dRegioes[Nome] = "Sul")
EVALUATE
// A tabela a retornar (obrigatório)
ADDCOLUMNS(
VALUES(dProdutos[Categoria]),
"Faturamento", [Fat Periodo]
)
ORDER BY
[Faturamento] DESC
START AT "Eletrônicos" // paginação: começar a partir deste valor
4. EVALUATE — a base de toda query
EVALUATE transforma qualquer expressão de tabela em resultado
visível. Tudo que retorna tabela em DAX pode ser avaliado com ele:
// Retornar uma tabela inteira (com filtros do contexto)
EVALUATE dProdutos
// Valores distintos de uma coluna
EVALUATE VALUES(dProdutos[Categoria])
// Top-5 vendas por valor
EVALUATE
TOPN(5, fVendas, fVendas[Valor], DESC)
// Resumo com SUMMARIZE
EVALUATE
SUMMARIZE(
fVendas,
dProdutos[Categoria],
"Total", SUM(fVendas[Valor])
)
ORDER BY [Total] DESC
// Múltiplos EVALUATE na mesma query (retorna múltiplas tabelas)
EVALUATE VALUES(dProdutos[Categoria])
EVALUATE VALUES(dRegioes[Nome])
5. DEFINE MEASURE — testar sem publicar
Cria medidas temporárias testáveis com dados reais, sem salvar no modelo — ideal para desenvolvimento iterativo:
DEFINE
MEASURE fVendas[Ticket Medio Temp] =
DIVIDE(SUM(fVendas[Valor]), COUNTROWS(fVendas), 0)
MEASURE fVendas[Margem Bruta Temp] =
DIVIDE(
SUM(fVendas[Valor]) - SUM(fVendas[Custo]),
SUM(fVendas[Valor]),
0
)
MEASURE fVendas[Status Meta Temp] =
IF([Ticket Medio Temp] > 1500, "Acima da Meta ✅", "Abaixo da Meta ❌")
EVALUATE
ADDCOLUMNS(
VALUES(dVendedores[Nome]),
"Ticket Médio", [Ticket Medio Temp],
"Margem %", [Margem Bruta Temp],
"Status", [Status Meta Temp]
)
ORDER BY [Ticket Médio] DESC
6. DEFINE VAR — variáveis globais na query
Variáveis em DEFINE ficam disponíveis em todo o bloco EVALUATE —
diferente das VAR de medidas, que são locais à fórmula:
DEFINE
VAR vMesAtual = 4 // Abril
VAR vAnoAtual = 2024
VAR vMetaGlobal = 50000 // R$50k de meta global
VAR vTopN = 5
EVALUATE
TOPN(
vTopN,
ADDCOLUMNS(
VALUES(dVendedores[Nome]),
"Faturamento",
CALCULATE(
SUM(fVendas[Valor]),
dCalendario[Mes] = vMesAtual,
dCalendario[Ano] = vAnoAtual
),
"Atingiu Meta",
IF(
CALCULATE(SUM(fVendas[Valor]),
dCalendario[Mes] = vMesAtual,
dCalendario[Ano] = vAnoAtual
) >= vMetaGlobal,
"✅", "❌"
)
),
[Faturamento], DESC
)
7. DEFINE TABLE — tabelas temporárias
Cria tabelas disponíveis só durante a query, sem precisar de tabelas calculadas permanentes no modelo:
DEFINE
TABLE tMetasManual =
DATATABLE(
"VendedorID", STRING,
"MetaQ2", DOUBLE,
{
{"V-01", 45000},
{"V-02", 38000},
{"V-03", 52000},
{"V-04", 41000}
}
)
EVALUATE
NATURALLEFTOUTERJOIN(
ADDCOLUMNS(
VALUES(fVendas[VendedorID]),
"Faturamento", CALCULATE(SUM(fVendas[Valor]))
),
tMetasManual
)
8. INFO Functions — documentação automática
As funções INFO.*/INFO.VIEW.* retornam metadados do modelo como
tabelas DAX. Combinadas com EVALUATE, permitem gerar documentação
automática do modelo:
// Inventário completo das tabelas
EVALUATE
SELECTCOLUMNS(
INFO.VIEW.TABLES(),
"Tabela", [Name],
"Tipo", [StorageMode],
"Oculta", [IsHidden],
"Desc.", [Description]
)
ORDER BY [Tabela]
// Documentação automática de medidas
EVALUATE
SELECTCOLUMNS(
INFO.VIEW.MEASURES(),
"Medida", [Name],
"Tabela", [TableName],
"Pasta", [DisplayFolder],
"Fórmula", [Expression],
"Formato", [FormatString],
"Oculta", [IsHidden]
)
ORDER BY [Tabela], [Pasta], [Medida]
Atenção:
INFO.VIEW.MEASURES(),INFO.VIEW.TABLES(),INFO.VIEW.COLUMNS()eINFO.VIEW.RELATIONSHIPS()exigem permissão de Admin no workspace do Power BI Service. No Power BI Desktop local, funcionam sem restrição.
8.1 — Descrição de medida com /// (novidade jul/2026)
Desde a atualização de julho/2026 do Power BI Desktop, dá para
documentar uma medida no próprio código, sem passar pelo Model
Explorer — usando a mesma sintaxe de comentário /// que o TMDL já
suporta para medidas e funções:
DEFINE
/// Crescimento de vendas ano a ano, em percentual.
/// Retorna BLANK() quando não há valor do ano anterior.
MEASURE Sales[YoY Growth %] =
DIVIDE(
[Fat Ano Atual] - [Fat Ano Anterior],
[Fat Ano Anterior]
)
EVALUATE
ROW("YoY Growth %", FORMAT([YoY Growth %], "0.0%"))
Depois de escrever o comentário, executar Update model with
changes (ou o CodeLens equivalente) grava a descrição direto na
propriedade Description da medida no modelo — sem abrir o Model
Explorer. A descrição passa a aparecer em 4 lugares: DAX Query View,
Model Explorer, Data Pane e tooltip ao passar o mouse sobre a medida.
O que vale documentar em cada bloco ///: o que a medida calcula,
regras de negócio relevantes (exclusões, filtros implícitos), quando
retorna BLANK(), e em quais indicadores ela costuma aparecer.
Descrições genéricas ("Calcula vendas", "Total") não ajudam ninguém —
nem o próximo desenvolvedor, nem o Copilot, que lê essas descrições
pra responder perguntas em linguagem natural sobre o modelo.
Confirmado: recurso validado contra learn.microsoft.com/en-us/ power-bi/transform-model/dax-query-view (atualizada jun/2026) e três
fontes independentes do lançamento de julho/2026 — exemplo idêntico ao
usado pela própria documentação oficial da Microsoft.
9. Debugando medidas complexas
O DAX Query View é a ferramenta de debug mais direta do Power BI —
isole cada parte de uma medida complexa com DEFINE MEASURE em cadeia
e veja o resultado de cada fragmento:
DEFINE
MEASURE fVendas[Fat Base] = SUM(fVendas[Valor])
MEASURE fVendas[Fat YTD] = TOTALYTD([Fat Base], dCalendario[Data])
MEASURE fVendas[Fat YTD LY] =
CALCULATE([Fat YTD], SAMEPERIODLASTYEAR(dCalendario[Data]))
MEASURE fVendas[Variacao YoY] =
DIVIDE([Fat YTD] - [Fat YTD LY], [Fat YTD LY], BLANK())
MEASURE fVendas[Variacao YoY Fmt] =
IF(ISBLANK([Variacao YoY]), "Sem dado LY", FORMAT([Variacao YoY], "0.0%"))
EVALUATE
ADDCOLUMNS(
VALUES(dCalendario[Ano]),
"Fat Base", [Fat Base],
"Fat YTD", [Fat YTD],
"Fat YTD LY", [Fat YTD LY],
"Variação", [Variacao YoY Fmt]
)
Cada MEASURE intermediária isola uma etapa do cálculo — se o
resultado final estiver errado, basta olhar em qual coluna o valor
começa a divergir do esperado.
10. Referência rápida de sintaxe
| Cláusula | Sintaxe | Obrigatório? |
|---|---|---|
DEFINE VAR | DEFINE VAR x = <valor> | Não |
DEFINE MEASURE | DEFINE MEASURE tabela[medida] = <fórmula> | Não |
DEFINE TABLE | DEFINE TABLE t = <expressão de tabela> | Não |
EVALUATE | EVALUATE <expressão de tabela> | Sim (mínimo 1) |
ORDER BY | ORDER BY <col> ASC|DESC | Não |
START AT | START AT <valor> | Não |
11. Atalhos no DAX Query View (Power BI Desktop)
| Atalho | Ação | Status |
|---|---|---|
F5 ou Ctrl+Enter | Executar a query | Não confirmado com fonte isolada — plausível |
Shift+Alt+F | Formatar a query automaticamente | ✅ Confirmado — Microsoft Learn |
Ctrl+/ | Comentar/descomentar linha selecionada | ✅ Confirmado — Microsoft Learn |
Ctrl+Alt+P | Abrir paleta de comandos | ✅ Confirmado — Microsoft Learn |
Ctrl+Space | Sugestões de autocomplete (IntelliSense) | Não confirmado com fonte isolada — padrão comum de editores |
Correção aplicada: o texto-fonte listava Ctrl+Shift+F para
formatar a query — a documentação oficial do Microsoft Learn confirma
que o atalho correto é Shift+Alt+F. Ctrl+Alt+P (paleta de
comandos) não estava no texto-fonte e foi adicionado por já estar
confirmado na doc oficial. O atalho Ctrl+K do livro-fonte ("adicionar
ao modelo") não foi encontrado na documentação — a ação equivalente
documentada é o botão/CodeLens "Update model with changes"; substituído
por "não confirmado" em vez de publicado como fato.
Nota de curadoria e auditoria
Conteúdo técnico validado contra
learn.microsoft.com/en-us/power-bi/transform-model/dax-query-view em
2026-08-05, e atualizado em 2026-08-07 com a seção 8.1 (descrições de
medida com ///, novidade de julho/2026 — validada contra a página
oficial da Microsoft e três fontes independentes de release notes).
Uma correção real encontrada (atalho de formatação). As
palavras-chave (DEFINE, MEASURE, TABLE, EVALUATE, ORDER BY,
START AT) já estavam auditadas em 01-dax-guia-conteudo.md — este
guia adiciona o contexto de uso e exemplos que a Biblioteca ainda não
tinha, fechando a lacuna citada no arquivo principal do projeto. Seção
de casos avançados com prompts de IA (validação de dados, diagnóstico
de RLS, exportação de documentação) omitida desta curadoria por ser
redundante com o Cookbook (26-dax-cookbook-casos-uso.md) e o Guia de
Prompts (27-dax-guia-prompts.md) — quem quiser esse material pode
reaproveitar diretamente do livro-fonte, seção 21.10-21.11.