Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Calcular dias Uteis na medida

Bom dia Pessoal!

Podem me ajudar com essa dúvida, preciso calcular a media emissão, considerando apenas os dias úteis, qual seria melhor forma de aplicar essa condição?

Essa medida que uso atualmente, porém ela não desconsidera os finais de semana.

Media Emissao = AVERAGEX(
    Certificados,
    DATEDIFF(Certificados[DATA INPUT],Certificados[DATA DE RETORNO],DAY))

Desde já agradeço.

4 respostas

Oi, Luciano! Tudo bom?

Trouxe uma sugestão bastante interessante para resolvermos este problema. Observe comigo:

Media Emissao = 
AVERAGEX(
    Certificados,
    VAR DataInicial = Certificados[DATA INPUT]
    VAR DataFinal = Certificados[DATA DE RETORNO]
    VAR DiasUteis = 
        COUNTROWS(
            FILTER(
                CALENDAR(DataInicial, DataFinal),
                WEEKDAY([Date]) <> 1 && WEEKDAY([Date]) <> 7
            )
        )
    RETURN DiasUteis
)

Nesta medida, estamos utilizando a função CALENDAR para gerar uma tabela de datas entre DataInicial e DataFinal. Em seguida, usamos a função FILTER para restringir essa tabela apenas para os dias úteis, excluindo os dias 1 (domingo) e 7 (sábado) usando a função WEEKDAY.

Por fim, contamos o número de linhas resultantes usando a função COUNTROWS.

Parece uma fórmula DAX um pouco mais complexa, mas todos esses recursos são necessários para olharmos separadamente cada dia a ser contabilizado. Caso queira conhecer um pouco mais sobre essas funções, aqui estão algumas recomendações de leitura:

Espero que isso te ajude! Contudo, vale ressaltar que como é um assunto externo aos cursos da Alura e que não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Bom dia!

Obrigado pelo retorno, fiquei com uma dúvida, pois quando ajustei a medida, Ex:

Data do input = 14/11/2023 Data de Retorno = 16/11/2023

Seria 2 dias o resultado, porem na medida o valor retornado é 3 dias, fiz algumas mudanças, mas não consegui acertar.

Exemplo da planilha utilizada.

DATA INPUT	DATA DE RETORNO
14/11/2023	16/11/2023
15/11/2023	15/11/2023
16/11/2023	20/11/2023
17/11/2023	21/11/2023
18/11/2023	22/11/2023
19/11/2023	23/11/2023
20/11/2023	24/11/2023
21/11/2023	25/11/2023

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oi, Luciano!

Obrigada por compartilhar o exemplo da planilha e uma imagem comigo!

Na medida que apresentei anteriormente, estávamos contabilizando todos os dias, mas o seu objetivo é considerar apenas a diferença entre as datas. Para contornar essa situação, podemos alterar a nossa fórmula para algo assim:

Media Emissao = 
AVERAGEX(
    Certificados,
    VAR DataInicial = Certificados[DATA INPUT]
    VAR DataFinal = Certificados[DATA DE RETORNO]
    VAR DiasTotais = DATEDIFF(DataInicial, DataFinal, DAY)
    VAR FimDeSemana = 
        COUNTROWS(
            FILTER(
                CALENDAR(DataInicial, DataFinal),
                WEEKDAY([Date]) = 1 || WEEKDAY([Date]) = 7
            )
        )
    VAR DiasUteis = DiasTotais - FimDeSemana
    RETURN DiasUteis
)

Neste caso, foi criada uma variável chamada DiasTotais, que efetua a substração entre DataFinal e DataInicial (assim como você fez no início). Além disso, implementamos a variável FimDeSemana, cujo objetivo é quantificar os domingos e os sábados (considerados dias de fim de semana).

Por fim, efetuamos a subtração entre DiasTotais e FimDeSemana (chegando na quantidade de dias úteis), bem como a média dessas diferenças.

Peço desculpas pela confusão! Espero que essa nova medida te ajude, Luciano! :)

Abraços.

Muito Obrigado pela ajuda.