Selo de estado:
Preview(teto atual do produto) · Curso ACD-320 — Fórmulas pt-BR: de SOMA a CALCULAR · Aula 10 de 13 · Atualizado em 2026-10-04.
Objetivo#
Ao final desta aula você vai distinguir saldo de soma.
Vídeo#
Identificador no manifesto: acd-320-10-saldos-e-estoque · duração-alvo 6 min · tela do produto: /dashboards.
Roteiro:
| # | Capítulo | Minutagem-alvo | Rota |
|---|---|---|---|
| 1 | Abertura — por que SOMA(saldo) dá o número errado | 00:00–01:00 | /dashboards |
| 2 | SALDO_FINAL — a foto do último dia com lançamento | 01:00–02:40 | /dashboards (biblioteca de medidas) |
| 3 | SALDO_INICIAL — o espelho no primeiro dia | 02:40–03:50 | /dashboards (editor de fórmulas) |
| 4 | O argumento de período: GRUPO, MES, TRI, ANO | 03:50–05:00 | /dashboards (editor de fórmulas) |
| 5 | Encerramento — "faça você mesmo" | 05:00–06:00 | /dashboards |
Conteúdo#
Estoque, saldo bancário, saldo de conta contábil — qualquer grandeza que é uma foto em um instante, não um fluxo que se acumula somando. Somar o saldo de todos os dias do mês dá um número sem sentido de negócio; esta aula ensina as duas funções que pegam a foto certa.
O problema: saldo não é aditivo
SOMA(coluna)SOMA(saldo)Se a tabela tem uma linha de saldo por dia (1000 no dia 5, 1500 no dia 20), SOMA(saldo) dá 2500 — um número que não corresponde a nada: não é o saldo de nenhum dia real, é a soma de duas fotos diferentes. O saldo do mês é uma das duas fotos, não a soma delas.
SALDO_FINAL — o último dia COM lançamento
SALDO_FINAL(expr; arg2; [arg3])DIFERE do DAX (CLOSINGBALANCEMONTH/QUARTER/YEAR, três funções separadas): aqui é uma função só, com o período como argumento — "GRUPO" (padrão, o próprio grupo do visual), "MES", "TRI" ou "ANO". Devolve o valor no último dia com lançamento do período — pula dias sem movimento no fechamento, não é "o último dia do calendário".
SALDO_FINAL(SOMA(saldo); data; "MES")| Entrada | Fórmula | Resultado |
|---|---|---|
| saldos 1000 (05/03) e 1500 (20/03), período MES | SALDO_FINAL(SOMA(saldo); data; "MES") | 1500 |
Alias: closingbalance.
SALDO_INICIAL — o espelho, primeiro dia COM lançamento
SALDO_INICIAL(expr; arg2; [arg3])Mesmo argumento de período do SALDO_FINAL; devolve o valor no primeiro dia com lançamento do período.
SALDO_INICIAL(SOMA(saldo); data; "MES")| Entrada | Fórmula | Resultado |
|---|---|---|
| saldos 1000 (05/03) e 1500 (20/03), período MES | SALDO_INICIAL(SOMA(saldo); data; "MES") | 1000 |
Alias: openingbalance.
Combinando os dois: a variação do período
SALDO_FINAL(...) - SALDO_INICIAL(...) dá a variação do saldo dentro do período — útil para "quanto o estoque subiu ou caiu este mês", sem depender de ter um lançamento em todo dia do calendário.
SALDO_FINAL(SOMA(saldo); data; "MES") - SALDO_INICIAL(SOMA(saldo); data; "MES")O argumento de período, com outro grão de eixo
O padrão "GRUPO" usa o próprio recorte do visual — então o mesmo SALDO_FINAL(SOMA(saldo); data) (sem o terceiro argumento) muda de significado dependendo de como a tabela está montada: numa tabela por semana, "GRUPO" dá o saldo do último dia com lançamento daquela semana; numa tabela por filial, dá o saldo do último dia com lançamento daquela filial no período inteiro mostrado. Informar "MES"/"TRI"/"ANO" explicitamente é o que torna a medida independente da granularidade do eixo — ela sempre fecha o mês (ou trimestre, ou ano) calendário, não importa como a tabela está organizada.
SALDO_FINAL(SOMA(saldo); data)Por que "último dia COM lançamento" importa
Se o workspace não lança movimento em fim de semana, um SALDO_FINAL que buscasse "o último dia do calendário" (31 de um mês que cai num domingo sem lançamento) devolveria vazio ou um valor desatualizado. Buscar o último dia com lançamento é o que faz o saldo de fechamento bater com o extrato real do banco ou com a contagem física de estoque — mesmo quando a última movimentação foi dia 28.
As duas funções, resumidas
| Função | Alias | Foto de qual dia | DAX |
|---|---|---|---|
SALDO_FINAL | closingbalance | último dia com lançamento | ≠ DAX (uma função, não três) |
SALDO_INICIAL | openingbalance | primeiro dia com lançamento | ≠ DAX (uma função, não três) |
O produto não tem um "SALDO_MEDIO" — se você precisar da média do saldo diário (em vez da foto de abertura/fechamento), use MEDIA(saldo) mesmo, porque aí a média é o que você quer agregar, e não uma foto de um instante.
Erros comuns
SOMA(saldo)Compila sem erro de sintaxe, mas é o erro conceitual mais comum desta aula: soma fotos de dias diferentes e produz um número sem significado de negócio. Use
SALDO_FINAL/SALDO_INICIAL.
- Esquecer o argumento de período e assumir que "GRUPO" (o padrão) sempre significa "o mês" — ele significa o grupo do visual, que pode ser o mês, o dia, a semana, dependendo de como você montou o eixo.
- Informar um período fora da lista aceita: o motor avisa com
SALDO_FINAL: período deve ser "GRUPO", "MES", "TRI" ou "ANO".
Estado da capacidade
Time intelligence sobre calendário configurável (C06.4) está em Preview — SALDO_FINAL/SALDO_INICIAL usam a mesma base de janelas de PRIMEIRA_DATA/ULTIMA_DATA (aula 8).
Faça você mesmo#
No workspace de treino Aurora Varejo (abra /dashboards no console):
- Crie a medida Saldo final do mês com
SALDO_FINAL(SOMA(saldo); data; "MES"). - Crie Saldo inicial do mês com
SALDO_INICIAL(SOMA(saldo); data; "MES"). - Compare as duas com
SOMA(saldo)no mesmo visual e confirme que os três números divergem. - Crie Variação de saldo com
SALDO_FINAL(SOMA(saldo); data; "MES") - SALDO_INICIAL(SOMA(saldo); data; "MES").
Você terminou quando as três medidas de saldo existirem e você conseguir explicar, com os números do seu visual, por que SOMA(saldo) não serve para essa grandeza.
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".