Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Sugestão] Sugestão de medida única - Aula "Conversão de horas e minutos no Power BI"

Na aula "Conversão de horas e minutos no Power BI" (Aula 08 - Atividade 02), o professor abriu 4 novos medidas para chegar em uma resposta que entregasse a média de carga horária no formato "hh:mm".

Pensando em otimizar o processo e reduzir o número de medidas para apenas 1, apliquei a criação de uma variável para chegar no mesmo resultado, dessa forma:

Media Carga Horaria Final = 
VAR vHoraTotal = AVERAGEX(fPonto, DATEDIFF(fPonto[Hora Entrada],fPonto[Hora Saída],HOUR))
RETURN
FORMAT(INT(vHoraTotal),"00") & ":" & FORMAT(ROUND((vHoraTotal-INT(vHoraTotal))*60,0),"00")

O que acharam? Existe mais alguma possibilidade de otimizar e reduzir o código? Alguém vê algum problema em criar a medida dessa forma?

Obrigado!

1 resposta
solução!

Olá, Gabriel!

Sua proposta ficou bem interessante e mostra uma boa preocupação com legibilidade e manutenção da medida.

O uso de variáveis (VAR) é uma prática recomendada em DAX, pois evita recalcular expressões, torna o código mais organizado e facilita futuras alterações. Testar concentrar toda a lógica em uma única medida pode ser uma boa alternativa quando esse cálculo não será reutilizado em outros lugares do relatório.

Veja este exemplo:

Media Carga Horaria Final =
VAR vHoraTotal =
    AVERAGEX(fPonto, DATEDIFF(fPonto[Hora Entrada], fPonto[Hora Saida], HOUR))
RETURN
FORMAT(INT(vHoraTotal), "00") & ":" &
FORMAT(ROUND((vHoraTotal - INT(vHoraTotal)) * 60, 0), "00")

Nesse exemplo, a variável calcula a média das horas e, em seguida, a medida separa a parte inteira (horas) da parte decimal (minutos), formatando o resultado como hh:mm.

Um detalhe para observar é que o uso de DATEDIFF(..., HOUR) retorna apenas horas inteiras. Isso significa que minutos existentes entre os horários são descartados antes do cálculo da média. Se houver registros como 08:30 ou 07:45, o resultado poderá perder precisão.

Uma alternativa é calcular a diferença em MINUTE e converter o resultado posteriormente. Dessa forma, a média considera toda a duração dos registros.

Media Carga Horaria Final =
VAR vMinutos =
    AVERAGEX(fPonto, DATEDIFF(fPonto[Hora Entrada], fPonto[Hora Saida], MINUTE))
RETURN
FORMAT(INT(vMinutos / 60), "00") & ":" &
FORMAT(MOD(ROUND(vMinutos, 0), 60), "00")

Nesse caso, a média é calculada em minutos, preservando a precisão do intervalo, e depois convertida novamente para o formato hh:mm.

Caso essa medida seja utilizada apenas para exibição, sua abordagem é bastante válida e ainda reduz a quantidade de medidas no modelo, deixando o relatório mais enxuto.

Você chegou a considerar um cenário em que a tabela tem os horários que inclui os minutos? Esse detalhe pode influenciar na melhor estratégia para esse cálculo.

Conteúdos para complementar seus estudos
Esse conteúdo pode estar em inglês, para traduzi-lo utilize o tradutor automático do navegador ou clique com o botão direito do mouse sobre a página e selecione a opção Traduzir para o português.
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!