Como calcular idade no Power BI com a DATEDIFF

Power BI · 5 min de leitura

Em resumo

Para calcular idade no Power BI, crie uma coluna com =DATEDIFF(Tabela[Nascimento]; TODAY(); YEAR). Atenção: a DATEDIFF conta as viradas de ano, então pode somar um ano antes do aniversário; quando a precisão importa, use uma fórmula que confere se o aniversário já passou.

Como calcular idade no Power BI com a DATEDIFF

Idade de clientes, de funcionários, de alunos: é um cálculo muito comum em relatórios, e no Power BI ele cabe numa linha de DAX com a função DATEDIFF. Neste guia você vai criar uma pequena tabela direto no Power BI com o recurso Inserir dados, calcular a idade com DATEDIFF e TODAY e, principalmente, entender um detalhe da DATEDIFF que pode fazer a idade sair um ano a mais, e como corrigir.

Caso prefira aprender por vídeo, veja o vídeo abaixo:

O que você vai aprender

  • Como criar uma tabela manualmente com Inserir dados;
  • A sintaxe da DATEDIFF e suas unidades;
  • Como calcular a idade com DATEDIFF e TODAY;
  • Por que a DATEDIFF pode errar a idade e a fórmula exata;
  • Coluna calculada ou medida: qual usar.

Passo 1: criar a tabela com Inserir dados

Normalmente os dados vêm de Obter Dados (Excel, banco, etc.). Para testes, exemplos ou pequenas tabelas de apoio, o Power BI permite digitar os dados direto:

  1. Num relatório em branco, clique em Página Inicial > Inserir dados;
  2. Dê duplo clique no cabeçalho "Coluna1" e renomeie para Nome;
  3. Clique no + ao lado para criar outra coluna e renomeie para Data de Nascimento;
  4. Preencha as linhas com alguns nomes e datas de nascimento. O + abaixo adiciona linhas; botão direito > Excluir remove;
  5. Em Nome (da tabela), escreva dPessoas.

Clique em Editar para abrir o Power Query e conferir os tipos: Nome deve estar como texto e Data de Nascimento como data. Depois, Fechar e Aplicar.

Passo 2: a função DATEDIFF

DATEDIFF(data_inicial, data_final, intervalo)

O intervalo pode ser SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER ou YEAR. O separador de argumentos pode ser vírgula ou ponto e vírgula, dependendo da configuração regional do seu Power BI.

Passo 3: a coluna de idade

  1. Vá para a Exibição de tabela e selecione a dPessoas;
  2. Em Ferramentas de tabela, clique em Nova coluna;
  3. Escreva:
Idade = DATEDIFF(dPessoas[Data de Nascimento], TODAY(), YEAR)

A TODAY() retorna a data de hoje, e o YEAR pede a diferença em anos. A coluna mostra a idade de cada pessoa.

Atenção: DATEDIFF conta viradas de ano

Aqui está o detalhe que pouca gente conhece. A DATEDIFF não conta anos completos; ela conta quantas vezes o calendário virou de um ano para o outro entre as duas datas. Exemplo: quem nasceu em 31 de dezembro e é comparado com 1º de janeiro do ano seguinte tem "1" de DATEDIFF em anos, com só um dia de vida.

Na prática: antes do aniversário no ano corrente, a DATEDIFF dá um ano a mais. Quem faz aniversário em setembro aparece com a idade nova desde janeiro. O mesmo vale para MONTH: ela conta viradas de mês, não meses completos.

A fórmula exata

Para a idade correta, subtraia os anos e desconte 1 se o aniversário ainda não chegou:

Idade =
VAR Nasc = dPessoas[Data de Nascimento]
VAR Hoje = TODAY()
RETURN
    YEAR(Hoje) - YEAR(Nasc)
        - IF(DATE(YEAR(Hoje), MONTH(Nasc), DAY(Nasc)) > Hoje, 1, 0)

A expressão DATE(YEAR(Hoje), MONTH(Nasc), DAY(Nasc)) é o aniversário deste ano. Se ele é depois de hoje, a pessoa ainda não fez aniversário, e o cálculo tira 1.

Use DATEDIFF com YEAR quando a diferença de "anos de calendário" basta (por exemplo, "contratado há X anos" de forma aproximada), e a fórmula acima quando a idade precisa ser exata.

Faixas etárias

Com a idade calculada, crie uma coluna de faixa para usar em gráficos e segmentações:

Faixa Etária =
SWITCH(
    TRUE(),
    dPessoas[Idade] < 18, "Até 17",
    dPessoas[Idade] < 25, "18 a 24",
    dPessoas[Idade] < 35, "25 a 34",
    dPessoas[Idade] < 50, "35 a 49",
    "50 ou mais"
)

Para a faixa aparecer na ordem certa nos gráficos, crie uma coluna numérica de ordem e use Classificar por Coluna. Veja como em como ordenar gráficos por dia da semana no Power BI.

Coluna calculada ou medida?

  • Coluna calculada (como neste guia): a idade fica gravada em cada linha e pode ser usada em eixos, filtros e faixas. A TODAY() é avaliada na atualização dos dados, então a idade muda quando o relatório é atualizado;
  • Medida: útil para a idade média de um grupo, por exemplo Idade Média = AVERAGE(dPessoas[Idade]), que responde aos filtros do relatório.

Outros usos da DATEDIFF

CálculoFórmula
Dias entre pedido e entregaDATEDIFF(Pedidos[Data Pedido], Pedidos[Data Entrega], DAY)
Tempo de atendimento em horasDATEDIFF(Chamados[Abertura], Chamados[Fechamento], HOUR)
Dias desde a última compraDATEDIFF(Clientes[Última Compra], TODAY(), DAY)

Em dias, horas e minutos, a contagem de "viradas" coincide com o tempo decorrido, então a DATEDIFF é exata.

Perguntas frequentes

Como calcular idade no Power BI?

Com uma coluna calculada: DATEDIFF(Data de Nascimento, TODAY(), YEAR), ou a fórmula exata que desconta 1 antes do aniversário.

Por que a idade no Power BI está com um ano a mais?

Porque a DATEDIFF com YEAR conta viradas de ano, não anos completos. Use a fórmula com o IF do aniversário.

A idade atualiza sozinha?

Numa coluna calculada, ela é recalculada a cada atualização do relatório.

DATEDIFF é igual à DATADIF do Excel?

Não exatamente. A DATADIF do Excel conta períodos completos; a DATEDIFF do DAX conta limites de calendário cruzados.

Conclusão

A DATEDIFF calcula diferenças entre datas em qualquer unidade e é perfeita para dias e horas. Para idade, lembre que ela conta viradas de ano: quando a precisão importa, use a fórmula que confere se o aniversário já passou. Para aprofundar em DAX, veja o minicurso gratuito de fórmulas DAX.

Bons estudos e até o próximo conteúdo! 🚀

Quer dominar o Power BI do básico ao avançado? Conheça o curso de Power BI online da Atuar: 245 aulas, certificado e monitoria 24h com IA.

Continue aprendendo