Pular para o conteúdo

ACUM_ANO/TRI/MES, PRIMEIRA/ULTIMA_DATA, INICIO/FIM_*

Aula 8 de 138 minOperarAtualizada em 2026-10-04

Vídeo em produção

A gravação desta aula está no lote de produção. O objetivo, o exercício e a documentação já valem. Duração-alvo: 8 min.

Objetivo: Criar YTD/MTD sobre calendário fiscal

Selo de estado: Preview (teto atual do produto) · Curso ACD-320 — Fórmulas pt-BR: de SOMA a CALCULAR · Aula 8 de 13 · Atualizado em 2026-10-04.

Objetivo#

Ao final desta aula você vai criar YTD/MTD sobre calendário fiscal.

Vídeo#

Identificador no manifesto: acd-320-08-time-intelligence-acumulados · duração-alvo 8 min · tela do produto: /dashboards.

Roteiro:

#CapítuloMinutagem-alvoRota
1Abertura — inteligência de tempo é contexto de filtro sobre datas00:00–00:50/dashboards
2ACUM_ANO (YTD) numa linha do tempo mensal00:50–02:40/dashboards (biblioteca de medidas)
3ACUM_TRI e ACUM_MES — a mesma ideia, janela menor02:40–03:50/dashboards (editor de fórmulas)
4PRIMEIRA_DATA / ULTIMA_DATA do grupo03:50–05:00/dashboards (editor de fórmulas)
5INICIO_MES/FIM_MES/INICIO_ANO/FIM_ANO e o calendário fiscal05:00–07:00/dashboards (configuração do calendário)
6Encerramento — "faça você mesmo"07:00–08:00/dashboards

Conteúdo#

Inteligência de tempo não é mágica: são funções que reescrevem o contexto de filtro de datas (aula 5) antes de reavaliar a medida — e todas elas exigem uma coluna de data no grupo atual, ligada ao calendário do modelo.

ACUM_ANO — o YTD

código
ACUM_ANO(expr; arg2)

DIFERE do DAX: o TOTALYTD do DAX exige uma tabela de datas marcada no modelo tabular; aqui ACUM_ANO reavalia a medida sobre as linhas do visual, sem exigir "marcar" nada — e já nasce com suporte a calendário fiscal/4-4-5: reinicia no início do ano do calendário configurado (janeiro no civil, abril num fiscal abr–mar).

formula
ACUM_ANO(MEDIDA('Receita'); data)

Num visual por mês, o acumulado sobe dentro do ano e zera na virada — exatamente o comportamento esperado de um YTD.

ACUM_TRI e ACUM_MES — a mesma função, janela menor

código
ACUM_TRI(expr; arg2)
ACUM_MES(expr; arg2)
formula
ACUM_TRI(MEDIDA('Receita'); data)
formula
ACUM_MES(MEDIDA('Receita'); data)

Aliases: totalqtd/qtd e totalmtd/mtd. A mesma observação do ACUM_ANO vale para as duas: operam sobre as linhas do visual, sem tabela de datas marcada, e respeitam o calendário fiscal quando configurado.

PRIMEIRA_DATA e ULTIMA_DATA — a menor e a maior data do grupo

código
PRIMEIRA_DATA(coluna)
ULTIMA_DATA(coluna)

DIFEREM do DAX: FIRSTDATE/LASTDATE no DAX devolvem uma tabela de uma coluna; aqui devolvem a data como um valor escalar direto.

formula
PRIMEIRA_DATA(data)
formula
ULTIMA_DATA(data)

São a base de janelas móveis (DATAS_NO_PERIODO, aula 9) e de SALDO_FINAL/SALDO_INICIAL (aula 10): "o último dia com lançamento" só é calculável porque ULTIMA_DATA devolve um valor que outra função consegue usar.

INICIO_MES, FIM_MES, INICIO_ANO, FIM_ANO — as bordas do período

código
INICIO_MES(coluna)
FIM_MES(coluna)
INICIO_ANO(coluna)
FIM_ANO(coluna)

Também diferem do DAX pelo mesmo motivo (STARTOFMONTH/ENDOFMONTH/STARTOFYEAR/ENDOFYEAR devolvem tabela no DAX, aqui devolvem data escalar) e também respeitam o calendário fiscal/4-4-5 configurado no modelo — "início do ano" não é sempre 1º de janeiro se o workspace usa ano fiscal.

formula
INICIO_MES(data)
formula
FIM_MES(data)
formula
INICIO_ANO(data)
formula
FIM_ANO(data)

Essas quatro funções raramente aparecem soltas numa medida — elas servem de referência para outras funções. ENTRE_DATAS (aula 9 mostra DATAS_NO_PERIODO, da mesma família) aceita exatamente uma data de início e uma de fim: INICIO_MES/FIM_MES são o jeito certo de produzir essas duas pontas sem escrever uma data fixa, que ficaria errada no mês seguinte.

Calendário fiscal/4-4-5: o que muda por baixo

Todas as nove funções desta aula aceitam um modelo com calendário fiscal (ano começando em qualquer mês, inclusive esquema 4-4-5) sem precisar de uma fórmula diferente. Sem calendário fiscal configurado, elas se comportam de forma idêntica, byte a byte, ao calendário civil — é um guard-rail de regressão: ativar o fiscal não muda o resultado de quem nunca precisou dele. Quando o workspace configura, por exemplo, ano fiscal começando em abril, INICIO_ANO(data) passa a devolver 1º de abril (não 1º de janeiro) e ACUM_ANO reinicia nessa mesma data — a mesma fórmula, sem reescrever nada, porque a inteligência de tempo lê o calendário do modelo, não assume um calendário fixo.

Referência das nove funções

FunçãoAliasDevolve
ACUM_ANOtotalytd, ytdNúmero acumulado no ano
ACUM_TRItotalqtd, qtdNúmero acumulado no trimestre
ACUM_MEStotalmtd, mtdNúmero acumulado no mês
PRIMEIRA_DATAfirstdateData (menor do grupo)
ULTIMA_DATAlastdateData (maior do grupo)
INICIO_MESstartofmonthData (1º dia do mês/período)
FIM_MESendofmonthData (último dia do mês/período)
INICIO_ANOstartofyearData (1º dia do ano, fiscal se configurado)
FIM_ANOendofyearData (último dia do ano, fiscal se configurado)

Erros comuns

  • Usar ACUM_ANO sem uma coluna de data ligada ao calendário do modelo — a comparação temporal exige a dimensão calendário relacionada ao fato.
  • Esperar que PRIMEIRA_DATA/ULTIMA_DATA devolvam uma tabela (hábito do DAX) — aqui o valor já vem pronto para usar direto noutra fórmula.
  • Repetir a fórmula de YTD em cada widget em vez de criar a medida central uma vez — ela diverge em silêncio se alguém editar uma cópia e esquecer a outra.

Estado da capacidade

Time intelligence sobre calendário configurável (C06.4) está em Preview; sem calendário fiscal configurado, o comportamento é idêntico ao civil (janeiro–dezembro), byte a byte.

Faça você mesmo#

No workspace de treino Aurora Varejo (abra /dashboards no console):

  1. Na biblioteca de medidas, crie Receita YTD com ACUM_ANO(MEDIDA('Receita'); data).
  2. Coloque Receita, Receita YTD numa linha do tempo mensal e confirme que o acumulado sobe dentro do ano e zera em janeiro seguinte.
  3. Crie PRIMEIRA_DATA(data) e ULTIMA_DATA(data) como medidas de apoio e confirme as datas de início/fim do período selecionado.
  4. Duplique a medida trocando a função por ACUM_MES(MEDIDA('Receita'); data) e ACUM_TRI(MEDIDA('Receita'); data) e ponha os três acumulados lado a lado — cada um zera no seu próprio ciclo.

Você terminou quando Receita YTD existir na biblioteca de medidas e você conseguir mostrar, no visual, o acumulado zerando na virada do ano.

Checagem rápida#

Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.

Documentação relacionada#

Capacidades ensinadas#

C06.4 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".

Carregando seu progresso…