Pular para o conteúdo
Fynx
Power BI6 min de leitura

medida de última data (LASTNONBLANK) em DAX: como calcular

Medida de última data com LASTNONBLANK em DAX: como pegar o último valor com dado, ideal para saldo de estoque e posição, com semântica non-additive e exemplos.

F
Fynx

Somar o saldo de estoque de vários dias dá um número que não significa nada

Algumas métricas não podem ser somadas ao longo do tempo, e essa é uma das armadilhas mais sutis do DAX. Se você tem o saldo de estoque de cada dia e soma os saldos do mês, obtém um número gigante e sem sentido, porque o estoque de hoje não se acumula com o de ontem; ele substitui. O mesmo vale para saldo bancário, número de assinantes ativos, posição de contratos. Para essas métricas, o total do período não é a soma, é o último valor disponível. Calcular a medida de última data com LASTNONBLANK em DAX é a forma correta de tratar esses casos. Este guia explica por que somar está errado aqui e como pegar o último valor com dado de forma robusta.

Métricas semi-aditivas não somam ao longo do tempo

O conceito por trás disso tem nome: são as métricas semi-aditivas. Elas podem ser somadas em algumas dimensões, mas não na dimensão de tempo. O saldo de estoque, por exemplo, pode ser somado entre produtos ou entre depósitos, faz sentido saber o estoque total de vários produtos, mas não pode ser somado entre dias, porque o saldo de cada dia já é a posição completa naquele momento. Para o total do mês, o que interessa é o saldo do último dia do mês, não a soma dos saldos diários. Reconhecer que uma métrica é semi-aditiva é o primeiro passo, porque muda completamente como você a agrega. Tratar uma métrica de posição como se fosse aditiva é um erro clássico que produz números absurdos sem gerar nenhum aviso.

LASTNONBLANK encontra a última data que realmente tem dado

A função central para esse cálculo é LASTNONBLANK. Ela percorre as datas e retorna a última em que a expressão avaliada não está em branco, ou seja, a última data com movimento ou registro. A diferença para outras funções de última data é justamente o não em branco: ela ignora dias sem dado e pega o último que de fato tem valor, o que é essencial quando o estoque não é registrado todos os dias. A estrutura básica combina LASTNONBLANK com CALCULATE para trazer o valor daquela data:

Estoque Final =
CALCULATE (
    SUM ( Estoque[Quantidade] ),
    LASTNONBLANK ( Calendario[Data], SUM ( Estoque[Quantidade] ) )
)

Assim, para qualquer recorte de tempo, a medida devolve o saldo da última data com dado dentro daquele recorte, que é o valor correto da posição no fim do período.

As funções de última data têm diferenças que importam

FunçãoO que retornaQuando preferir
LASTNONBLANKÚltima data com valor não vazioEstoque registrado de forma irregular
LASTDATEÚltima data do contextoQuando todos os dias têm dado
CLOSINGBALANCEMONTHSaldo no fim do mêsFechamento mensal direto

LASTDATE e as funções de fechamento são alternativas para cada caso

LASTNONBLANK não é a única ferramenta, e escolher a certa depende do dado. LASTDATE simplesmente devolve a última data do contexto atual, sem se importar se há valor nela; funciona bem quando você tem certeza de que todos os dias relevantes têm registro, mas pode trazer um resultado vazio se o último dia do período não tiver movimento. Por isso, para estoques registrados de forma irregular, LASTNONBLANK costuma ser mais segura. Há ainda funções de fechamento como CLOSINGBALANCEMONTH, que já trazem o saldo no fim do mês diretamente, encapsulando parte dessa lógica para os casos mais comuns de fechamento mensal. Conhecer as três permite escolher a mais adequada ao seu dado: LASTNONBLANK para robustez com dados irregulares, LASTDATE quando o dado é contínuo, e as funções de fechamento quando você quer um atalho para saldos de fim de período.

O comportamento correto aparece nos totais e subtotais

O sinal de que você acertou a medida semi-aditiva está nos totais. Com uma medida de última data bem construída, o valor de um dia é o saldo daquele dia, o valor de um mês é o saldo do último dia do mês, e o valor do ano é o saldo do último dia do ano, e não a soma de tudo. Os subtotais deixam de inflar e passam a fazer sentido de negócio. Esse é justamente o comportamento que uma soma comum erraria, mostrando totais absurdos. Vale conferir sempre o resultado em diferentes níveis de tempo para garantir que a lógica está correta: o total mensal deve bater com o saldo do fechamento daquele mês. Quando isso acontece, você tem uma medida de posição confiável, pronta para painéis de estoque, saldo e assinantes ativos, que são casos onde o erro de somar passaria despercebido e comprometeria a decisão. Para modelos e medidas corretas, veja nossos serviços de Power BI, os dashboards e o guia completo de Power BI para empresas.

Perguntas frequentes

O que é uma métrica semi-aditiva? É uma métrica que pode ser somada em algumas dimensões, mas não na de tempo. O saldo de estoque, por exemplo, pode somar entre produtos, mas não entre dias, porque o saldo de cada dia já é a posição completa naquele momento.

Por que não posso somar o saldo de estoque no mês? Porque o estoque de cada dia não se acumula com o do dia anterior; ele substitui. Somar os saldos diários gera um número gigante e sem sentido. O total do mês deve ser o saldo do último dia, não a soma.

O que a função LASTNONBLANK faz? Ela retorna a última data em que a expressão avaliada não está em branco, ou seja, a última data com valor de fato. Isso a torna ideal quando o dado, como o estoque, não é registrado todos os dias.

Qual a diferença entre LASTNONBLANK e LASTDATE? LASTDATE devolve a última data do contexto, mesmo que não haja valor nela. LASTNONBLANK devolve a última data que tem valor. Para dados registrados de forma irregular, LASTNONBLANK é mais segura por ignorar dias sem dado.

Existe uma função pronta para saldo de fim de mês? Sim, funções como CLOSINGBALANCEMONTH trazem o saldo no fim do mês diretamente, encapsulando parte da lógica de última data. São um atalho útil para os casos comuns de fechamento mensal de saldos.

Como sei que a medida está correta? Conferindo os totais em diferentes níveis de tempo. O total mensal deve bater com o saldo de fechamento daquele mês, e o anual com o último dia do ano, em vez de inflar como faria uma soma. Se os subtotais fazem sentido, a lógica está certa.

Trate posição como posição, não como soma

Saldo de estoque, banco e assinantes são métricas semi-aditivas: o total do período é o último valor, não a soma. Com LASTNONBLANK, ou LASTDATE e as funções de fechamento conforme o dado, a medida fica correta. Se quiser medidas de posição confiáveis, fale com a gente.

Quer aplicar isso na sua empresa?

A Fynx implementa BI, Power BI e Power Platform de ponta a ponta. Conte seu cenário e devolvemos um diagnóstico direto ao ponto.

Falar com um especialista

Vamos transformar seus dados em decisão?

Conte seu cenário. Devolvemos um diagnóstico e uma proposta com faixa de investimento em poucos dias úteis, sem folheto, direto ao ponto.