Principais Funções DAX
SUM (Soma)
Soma todos os números em uma coluna.
Sintaxe
SUM(<coluna>)
- <coluna>: A coluna que contém os números que você deseja somar.
AVERAGE (Média)
Calcula a média aritmética de todos os números em uma coluna.
Sintaxe
AVERAGE(<coluna>)
- <coluna>: A coluna que contém os números dos quais você deseja calcular a média.
COUNT (Contagem)
Conta o número de linhas em uma coluna que contêm valores não brancos (números, datas ou texto).
Sintaxe
COUNT(<coluna>)
- <coluna>: A coluna da qual você deseja contar os valores.
DISTINCTCOUNT (Contagem Distinta)
Conta o número de valores únicos (distintos) em uma coluna.
Sintaxe
DISTINCTCOUNT(<coluna>)
- <coluna>: A coluna da qual você deseja contar os valores distintos.
CALCULATE (Calcular)
A função mais importante do DAX. Avalia uma expressão em um contexto de filtro modificado.
Sintaxe
CALCULATE(<expressão>[, <filtro1>[, <filtro2>[, …]]])
- <expressão>: A medida ou cálculo que você deseja executar (ex: `SUM(FactVendas[Quantidade])`).
- <filtroN>: Uma ou mais condições de filtro que modificam o contexto (ex: `DimProduto[Categoria] = "Eletrônicos"`).
FILTER (Filtrar)
Retorna uma tabela que representa um subconjunto de outra tabela, com base em uma condição de filtro.
Sintaxe
FILTER(<tabela>, <expressão_de_filtro>)
- <tabela>: A tabela que você deseja filtrar.
- <expressão_de_filtro>: Uma expressão booleana (verdadeiro/falso) avaliada para cada linha da tabela.
ALL (Tudo)
Remove todos os filtros de uma tabela ou de colunas específicas. Muito usada dentro de `CALCULATE`.
Sintaxe
ALL([<tabela> | <coluna1>[, <coluna2>[, …]]])
- <tabela> / <coluna>: (Opcional) A tabela ou colunas das quais você deseja remover os filtros. Se deixado em branco, remove todos os filtros do contexto atual.
RELATED (Relacionado)
Busca um valor de uma tabela relacionada (lado "um" da relação). Usada para criar colunas calculadas.
Sintaxe
RELATED(<coluna>)
- <coluna>: A coluna da tabela relacionada (lado "um") que você deseja trazer.
IF (Se)
Verifica uma condição e retorna um valor se for VERDADEIRA, e outro valor se for FALSA.
Sintaxe
IF(<condição>, <resultado_verdadeiro>, [<resultado_falso>])
- <condição>: A expressão lógica a ser testada.
- <resultado_verdadeiro>: O valor a ser retornado se a condição for verdadeira.
- <resultado_falso>: (Opcional) O valor a ser retornado se a condição for falsa. Se omitido, retorna BLANK.
SWITCH (Alternar)
Uma forma mais limpa de escrever múltiplos `IF`s aninhados. Compara uma expressão com uma lista de valores.
Sintaxe
SWITCH(<expressão>, <valor1>, <resultado1>[, <valor2>, <resultado2>[, …[, <outro>]]])
- <expressão>: A expressão a ser avaliada.
- <valorN>: Um valor constante a ser comparado com a expressão.
- <resultadoN>: O valor a ser retornado se a expressão corresponder ao <valorN>.
- <outro>: (Opcional) O valor a ser retornado se a expressão não corresponder a nenhum valor.
TOTALYTD (Total no Ano)
Calcula o acumulado de uma expressão no ano (Year-to-Date), desde o início do ano até a data atual no contexto.
Sintaxe
TOTALYTD(<expressão>, <datas>[, <filtro>[, <fim_do_ano>]])
- <expressão>: A medida a ser acumulada (ex: `[Faturamento Total]`).
- <datas>: A coluna de datas da sua tabela calendário (ex: `DimCalendario[Data]`).
- <fim_do_ano>: (Opcional) Define a data de término do ano fiscal (ex: "31/12").
SAMEPERIODLASTYEAR (Mesmo Período do Ano Anterior)
Retorna uma tabela de datas deslocada um ano para trás. Usada com `CALCULATE` para comparar com o ano anterior.
Sintaxe
SAMEPERIODLASTYEAR(<datas>)
- <datas>: A coluna de datas da sua tabela calendário (ex: `DimCalendario[Data]`).
DIVIDE (Dividir)
Executa uma divisão de forma segura, tratando automaticamente erros de divisão por zero.
Sintaxe
DIVIDE(<numerador>, <denominador>[, <resultado_alternativo>])
- <numerador>: O número a ser dividido.
- <denominador>: O número pelo qual dividir.
- <resultado_alternativo>: (Opcional) O valor a ser retornado se o denominador for zero. Se omitido, retorna BLANK.
VALUES (Valores)
Retorna uma tabela de uma coluna contendo os valores distintos da coluna especificada. Respeita o contexto de filtro.
Sintaxe
VALUES(<tabela_ou_coluna>)
- <tabela_ou_coluna>: A coluna da qual você deseja obter os valores distintos.
✨ Assistente DAX com Gemini
Use o poder da IA para acelerar seu aprendizado. Descreva o que você precisa ou peça para a IA explicar uma fórmula complexa.
1. Gerar Medida DAX
Descreva o cálculo que você quer fazer em português. A IA usará o esquema das tabelas da atividade prática para gerar a fórmula DAX.
Exemplo: "Qual o faturamento total apenas para a categoria 'Eletrônicos'?"
Sua fórmula DAX aparecerá aqui...
2. Explicar Fórmula DAX
Cole uma fórmula DAX (pode ser uma das geradas ou qualquer outra) e a IA explicará passo a passo o que ela faz, em português.
Exemplo: "CALCULATE([Faturamento Total], SAMEPERIODLASTYEAR(DimCalendario[Data]))"
A explicação da fórmula aparecerá aqui...
Atividade Prática: Modelo de Vendas
Para praticar, baixe os arquivos CSV abaixo e carregue-os no Power BI. Eles simulam um modelo de dados simples de vendas (Star Schema). Após carregar, vá para a exibição "Modelo" e crie os relacionamentos:
FactVendas[IDProduto]→DimProduto[IDProduto](Muitos para Um)FactVendas[IDCliente]→DimCliente[IDCliente](Muitos para Um)FactVendas[Data]→DimCalendario[Data](Muitos para Um)
Importante: Após carregar a `DimCalendario`, vá para a exibição de "Tabela", selecione a tabela `DimCalendario` e, no menu superior, marque-a como "Tabela de data". Isso é essencial para as funções de inteligência de tempo.
Tabela Fato (FactVendas): Esta é a tabela principal de transações. Cada linha representa uma venda. Contém as chaves estrangeiras (IDs) que a ligam às tabelas de dimensão e os valores principais (Quantidade, ValorUnitario).
Tabela Dimensão (DimProduto): Descreve os produtos. Contém o ID do produto, nome, categoria e preço. É usada para filtrar ou agrupar as vendas por produto.
Tabela Dimensão (DimCliente): Descreve os clientes. Contém o ID do cliente, nome e localização (Cidade, Estado). Usada para analisar vendas por região ou cliente.
Tabela Dimensão (DimCalendario): A tabela de datas. Essencial para inteligência de tempo. Contém uma linha para cada dia, com colunas para Ano, Mês, Trimestre, etc.
Medidas e Colunas para Praticar (Mapeadas por Função)
Crie as seguintes medidas (ou colunas calculadas, quando indicado) no Power BI para praticar as funções DAX.
Função Base: Coluna Calculada
1. Coluna Faturamento (na `FactVendas`)
Faturamento = FactVendas[Quantidade] * RELATED(DimProduto[PrecoUnitario])
Por quê? Precisamos de uma coluna de faturamento em cada linha de venda. Como o preço está na `DimProduto`, usamos `RELATED` para buscá-lo.
Função Base: SUM
2. Medida Faturamento Total
Faturamento Total = SUM(FactVendas[Faturamento])
Por quê? Esta é a medida base principal. Ela soma a coluna `Faturamento` que acabamos de criar.
Funções Base: DIVIDE, COUNT
3. Medida Nº de Vendas
Nº de Vendas = COUNT(FactVendas[IDProduto])
4. Medida Ticket Médio
Ticket Médio = DIVIDE( [Faturamento Total], [Nº de Vendas] )
Por quê? `DIVIDE` é a forma segura de calcular o faturamento por número de vendas, evitando erros se `[Nº de Vendas]` for zero.
Função Base: AVERAGE
5. Medida Média Faturamento por Linha
Média Faturamento por Linha = AVERAGE(FactVendas[Faturamento])
Por quê? Diferente do Ticket Médio, isso calcula a média da coluna `Faturamento` (não por venda). Mostra o valor médio de cada *linha* de transação.
Função Base: DISTINCTCOUNT
6. Medida Clientes Únicos
Clientes Únicos = DISTINCTCOUNT(FactVendas[IDCliente])
Por quê? Conta quantos clientes *diferentes* compraram, não importa quantas vezes cada um comprou.
Funções Base: CALCULATE, FILTER (implícito)
7. Medida Faturamento Eletrônicos
Faturamento Eletrônicos =
CALCULATE(
[Faturamento Total],
DimProduto[Categoria] = "Eletrônicos"
)
Por quê? `CALCULATE` modifica o contexto. Ele executa o `[Faturamento Total]` *apenas* para as linhas onde a categoria é "Eletrônicos".
Funções Base: CALCULATE, ALL, DIVIDE
8. Medida % Faturamento Total (Participação)
% Faturamento Total =
DIVIDE(
[Faturamento Total],
CALCULATE(
[Faturamento Total],
ALL(DimProduto)
)
)
Por quê? Para calcular a participação (ex: de um produto no total), dividimos o faturamento do produto (`[Faturamento Total]` no contexto atual) pelo faturamento total de *todos* os produtos (`CALCULATE` com `ALL` para remover o filtro do produto).
Funções Base: IF
9. Coluna Classificação de Preço (na `DimProduto`)
Classificação Preço =
IF(
DimProduto[PrecoUnitario] > 1000,
"Alto Custo",
"Baixo Custo"
)
Por quê? `IF` nos permite categorizar cada produto com base em seu preço.
Funções Base: SWITCH
10. Coluna Grupo Categoria (na `DimProduto`)
Grupo Categoria =
SWITCH(
TRUE(),
DimProduto[Categoria] = "Eletrônicos", "Tecnologia",
DimProduto[Categoria] = "Informática", "Tecnologia",
DimProduto[Categoria] = "Móveis", "Casa",
DimProduto[Categoria] = "Escritório", "Casa",
"Outros"
)
Por quê? `SWITCH` é mais limpo que vários `IF`s para agrupar categorias em grupos maiores.
Funções Base: TOTALYTD
11. Medida Faturamento YTD (Acumulado no Ano)
Faturamento YTD =
TOTALYTD(
[Faturamento Total],
DimCalendario[Data]
)
Por quê? Calcula o faturamento acumulado desde o início do ano até a data atual no filtro.
Funções Base: SAMEPERIODLASTYEAR, CALCULATE
12. Medida Faturamento Ano Anterior (LY)
Faturamento LY =
CALCULATE(
[Faturamento Total],
SAMEPERIODLASTYEAR(DimCalendario[Data])
)
Por quê? `SAMEPERIODLASTYEAR` "viaja no tempo", aplicando o `[Faturamento Total]` ao período exato do ano anterior.
Funções Base: DIVIDE
13. Medida Crescimento vs Ano Anterior (%)
Crescimento % vs LY =
DIVIDE(
( [Faturamento Total] - [Faturamento LY] ),
[Faturamento LY]
)
Por quê? A fórmula padrão de crescimento (Ano Atual - Ano Anterior) / Ano Anterior.
Funções Base: VALUES, COUNTROWS, IF
14. Medida Faturamento (Apenas se 1 Produto filtrado)
Faturamento (se 1 Produto) =
IF(
COUNTROWS(VALUES(DimProduto[Produto])) = 1,
[Faturamento Total],
BLANK()
)
Por quê? Uma medida defensiva. `VALUES` retorna os produtos no contexto atual. Se for apenas 1, mostra o faturamento. Se for mais de 1 (ou 0), não mostra nada. Útil para títulos de gráficos dinâmicos.