3
respostas

[Projeto] DÚVIDA DE FORMULA NO BI

Boa noite, pessoal!

Gostaria de entender melhor como desenvolver uma fórmula de janela no BI (na base de dados), para que, ao selecionar a unidade destino do cliente, o resultado seja apresentado de forma geral.

Para contextualizar: trabalho na área de logística e cada cliente possui um lead time específico. Esse lead time é utilizado em nossos indicadores de performance. Por exemplo, há clientes cuja janela de entrega ocorre às segundas, quartas e sextas-feiras.

Preciso, com urgência, de apoio para desenvolver essa fórmula — ou, caso seja mais adequado, que me indiquem um curso que aborde esse tema, para que eu possa aprender a criar essa solução.

Agradeço desde já pela ajuda de todos!

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
3 respostas

Oi Geovanna.
Tudo bom com voce?
Vou tentar te ajudar a desenvolver a fórmula para calcular a "janela de entrega" dos clientes de forma geral na base de dados do seu BI.
A fórmula de janela que você mencionou seria usada para calcular os indicadores de performance de acordo com as regras de entrega de cada cliente.
Se um cliente tem um lead time (tempo entre o pedido e a entrega) e uma janela de dias de entrega específicas (como segunda, quarta e sexta), você precisa considerar esses critérios para ajustar o tempo de entrega e gerar os resultados de acordo.
Você vai precisar de duas informações principais para montar essa fórmula:

  • Lead Time: Tempo de entrega de cada cliente (ex: 2 dias, 4 dias, etc.)
  • Dias da Janela de Entrega: Abertura para entrega (ex: segunda, quarta, sexta-feira).

A fórmula precisa calcular qual seria a data de entrega final com base no lead time e na janela de dias.
Você pode criar isso com DAX (caso esteja usando Power BI) ou SQL, dependendo da sua base de dados.
Vou te mostrar um exemplo básico de como isso poderia ser feito.

  1. Criar uma Tabela de Dias da Semana:
    Para lidar com os dias da semana (segunda, quarta, sexta), você pode criar uma tabela de datas que tenha todos os dias da semana e um campo indicando se o dia é um "dia válido" para entrega.
TabelaDias = 
ADDCOLUMNS (
    CALENDAR (DATE(2025,1,1), DATE(2025,12,31)), 
    "DiaSemana", WEEKDAY([Date]),
    "DiaValido", IF(
        WEEKDAY([Date],2) IN {1,3,5}, TRUE(), FALSE()  -- Segunda (1), Quarta (3), Sexta (5)
    )
)
  1. Cálculo da Data de Entrega:
    Com a tabela de dias válida, agora você pode criar uma fórmula de entrega no DAX, que calcula a próxima data de entrega válida após o lead time.
    Exemplo de fórmula para calcular a próxima data de entrega válida após o lead time:
DataEntrega = 
VAR LeadTime = [LeadTimeCliente]  -- Supondo que esse campo esteja na tabela de clientes
VAR DataPedido = [DataPedido]    -- Data em que o pedido foi realizado
VAR DiasCorridos = DataPedido + LeadTime
VAR ProximaData = 
    CALCULATE (
        MIN (TabelaDias[Date]), 
        TabelaDias[Date] >= DiasCorridos && TabelaDias[DiaValido] = TRUE()
    )
RETURN ProximaData

Essa fórmula basicamente pega a data do pedido, soma o lead time e encontra a próxima data válida de entrega de acordo com os dias configurados na tabela.
Se você está usando SQL ou outro tipo de BI, o conceito ainda é o mesmo: você precisa de uma tabela de datas e uma lógica para somar o lead time e encontrar a próxima data que satisfaça a janela de entrega.
Caso você queira aprender mais sobre essas técnicas, Tem varios cursos aqui mesmo na plataforma.
Analisa ai e veja se o conteudo acima te ajuda de alguma forma.
Para algo mais complexo e proximo do seu problema precisaria de mais informações.
Bons estudos e espero que tudo ocorra bem.
E mande um feedback pra nós.
Até...

Bom dia, Ronaldo Tudo bem com você?

Neste caso quero considerar a data do cte (conhecimento) emitido + lead time da entrega + janela, como posso refazer está ultima formula?

Oi Geovanna.
Estou bem e melhor agora com seu feedback.
Espero que esteja bem também.
Vou tentar lhe ajudar com a fórmula.
Para ajustar a fórmula de acordo com a sua nova necessidade levando em consideração a data do CTe (Conhecimento de Transporte Eletrônico), o lead time da entrega e a janela de dias de entrega precisaremos adaptar o cálculo para essas novas variáveis.

Passos:

  1. Data CTe: Essa será a nova referência para o início do cálculo (não a data do pedido).
  2. Lead Time: Consideraremos o tempo entre o CTe e a data de entrega.
  3. Janela de Entrega: Precisaremos considerar a tabela de dias válidos (segunda, quarta e sexta-feira) e, após somar o lead time, encontrar a próxima data válida conforme a janela de dias.

Passo 1: Ajustar a fórmula para considerar a data do CTe

A data do CTe será a data de referência para o início do cálculo, e somaremos o lead time para encontrar o "ponto inicial" da janela de entrega.

Passo 2: Aplicar a lógica da janela de entrega

Após somar o lead time, precisamos buscar a próxima data válida dentro da janela (segunda, quarta e sexta-feira).
Aqui está uma versão ajustada da fórmula para calcular a data de entrega levando em consideração o CTe, o lead time e a janela de entrega:

DataEntrega = 
VAR DataCTe = [DataCTe]  -- Campo com a data do CTe (Conhecimento de Transporte Eletrônico)
VAR LeadTime = [LeadTimeCliente]  -- Campo com o lead time para cada cliente
VAR DataInicial = DataCTe + LeadTime  -- Soma do CTe com o lead time (ponto inicial para busca da entrega)
VAR ProximaData = 
    CALCULATE (
        MIN (TabelaDias[Date]),  -- Encontra a próxima data válida
        TabelaDias[Date] >= DataInicial &&  -- A data deve ser maior ou igual à data inicial (após o lead time)
        TabelaDias[DiaValido] = TRUE()  -- Considera apenas os dias válidos (segunda, quarta, sexta)
    )
RETURN ProximaData

Como funciona:

  1. DataCTe: A variável DataCTe armazena a data de emissão do CTe.
  2. LeadTime: O LeadTime é somado à DataCTe para determinar a data inicial (DataInicial) a partir da qual começamos a procurar a data de entrega válida.
  3. ProximaData: A fórmula usa CALCULATE para buscar a próxima data válida dentro da tabela TabelaDias que seja maior ou igual à DataInicial e que seja um "dia válido" conforme sua janela de entrega (segunda, quarta e sexta).

Exemplo:

  • Se o CTe foi emitido em 10/11/2025 e o lead time é de 3 dias, a data inicial será 13/11/2025.
  • Se o cliente tem a janela de entrega em segunda, quarta e sexta, a fórmula procurará a próxima data válida de entrega após 13/11/2025, que pode ser 16/11/2025 (se for uma segunda-feira, por exemplo).

Se o CTe e o lead time resultarem em uma data que não seja válida (como um sábado ou domingo), o cálculo vai buscar o próximo dia válido de acordo com a sua tabela.
Certifique-se de que a tabela TabelaDias tenha todas as datas e as flags de "DiaValido" corretamente configuradas, como no exemplo inicial.
Isso deve resolver a questão de calcular a data de entrega com base no CTe e na janela de entrega.
Analise o código e faça as alterações e testes.
E envia um feedback com os resultados.
E se ficar alguma duvida comente ai.
Bons estudos.