(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como calcular taxa de retenção cohortal em DAX: passo a passo

João Barros 27 de August de 2026 4 min de leitura

Este tutorial mostra como calcular a taxa de retenção por cohort em DAX: ou seja, agrupar utilizadores pela sua primeira interação (cohort) e medir quantos desses utilizadores voltam nos meses seguintes. A análise cohortal é útil para entender retenção, eficácia de onboarding e impacto de mudanças no produto.

Pré-requisitos

  • Power BI Desktop (ou outro ambiente que suporte DAX).
  • Uma tabela de eventos com colunas: UserID, EventDate (datetime) e EventType (opcional).
  • Tabela de datas (date table) marcada como Date e relações entre Date[Date] e Event[EventDate].

Passo 1: Criar a coluna de First Purchase Month (cohort)

Precisamos identificar o mês da primeira interação de cada utilizador — essa será a sua cohort. Vamos criar uma coluna calculada na tabela de utilizadores ou na tabela de eventos (agrupar por UserID). Aqui usamos a tabela Event.

FirstEventMonth =
VAR FirstDate =
    CALCULATE(
        MIN(Event[EventDate]),
        ALLEXCEPT(Event, Event[UserID])
    )
RETURN
    STARTOFMONTH(FirstDate)

Explicação: CALCULATE + MIN encontra a primeira data por UserID; ALLEXCEPT garante que o contexto é apenas o utilizador. STARTOFMONTH normaliza para o primeiro dia do mês, facilitando agrupamentos mensais.

Passo 2: Criar coluna MonthOfEvent para comparação temporal

Precisamos também de uma coluna com o mês do próprio evento para comparar meses decorridos desde a cohort.

EventMonth = STARTOFMONTH(Event[EventDate])

Esta coluna é simples e normaliza cada evento ao início do mês correspondente.

Passo 3: Calcular months since cohort (meses desde a cohort)

Agora calculamos quantos meses separam EventMonth e FirstEventMonth para pivotar a retenção por mês (M0, M1, M2...).

MonthsSinceCohort =
DATEDIFF(Event[FirstEventMonth], Event[EventMonth], MONTH)

DATEDIFF em MONTH devolve 0 para o mês da cohort, 1 para o mês seguinte, etc.

Passo 4: Criar a medida de utilizadores únicos por cohort e mês

Queremos contar quantos utilizadores únicos, por combinação de FirstEventMonth e MonthsSinceCohort, tiveram pelo menos um evento. Criamos uma medida para isso.

Users by Cohort =
CALCULATE(
    DISTINCTCOUNT(Event[UserID]),
    VALUES(Event[FirstEventMonth]),
    VALUES(Event[MonthsSinceCohort])
)

VALUES garante que a contagem respeita o filtro das colunas de cohort e meses no visual (tabela ou matrix).

Passo 5: Criar a medida de cohort size (tamanho da cohort)

Para obter a taxa de retenção dividimos pelo número de utilizadores da cohort no mês zero (M0). Criamos uma medida que calcula o tamanho da cohort (utilizadores no M0) para cada FirstEventMonth.

Cohort Size =
VAR CohortMonth = SELECTEDVALUE(Event[FirstEventMonth])
RETURN
CALCULATE(
    DISTINCTCOUNT(Event[UserID]),
    Event[FirstEventMonth] = CohortMonth,
    Event[MonthsSinceCohort] = 0
)

SELECTEDVALUE obtém a cohort do contexto actual. O filtro MonthsSinceCohort = 0 isola apenas os utilizadores no mês inicial.

Passo 6: Medida de taxa de retenção (retention rate)

Finalmente, calculamos a percentagem que retornou no mês N dividindo Users by Cohort pela Cohort Size. Usamos DIVIDE para evitar divisões por zero.

Retention Rate =
DIVIDE(
    [Users by Cohort],
    [Cohort Size],
    0
)

Esta medida retorna valores entre 0 e 1; multiplica por 100 no visual se quiseres percentagem.

Verificar o resultado

Cria uma Matrix em Power BI com as linhas a serem Event[FirstEventMonth] (cohort), as colunas Event[MonthsSinceCohort] (ordenadas 0,1,2...) e valores a serem [Retention Rate] (formatar como percentagem) e [Cohort Size] como referência. Verifica se:

  • Na coluna MonthsSinceCohort = 0, Retention Rate é 100% (ou 1) pois cohort size divide por si mesma.
  • Os números decrescem gradualmente para meses posteriores, salvo picos justificados.
  • Se veres diferenças inesperadas, confere se as colunas FirstEventMonth e EventMonth estão correctas e se a tabela de datas está relacionada correctamente.

Conclusão

Com estas medidas tens uma base para análises cohortais em DAX: identificar cohorts, medir retenção mês a mês e comparar coortes ao longo do tempo. Próximos passos incluem ajustar para retenção por semana, segmentar por canal ou EventType, e criar heatmaps para visualização. Dica: usa filtros de data e segmentações para validar cenários e confirma sempre se o primeiro evento está correctamente calculado — esse erro é muito comum.