
Como vocês sabem, na #Dataside amamos compartilhar conhecimento, então o Rafael Bezerra escreveu um artigo especial para explicar melhor sobre como criar medida que apresente Dias, Horas, Minutos e Segundos. Boa leitura!
Olá Gente, há algum tempo tive a necessidade de desenvolver uma medida que apresentasse Dias, Horas, Minutos e Segundos. Quando concluí, achei interessante compartilhar tal conhecimento com vocês!
Então, vamos estudar como criá-la?
Para não estender muito essa postagem, já trago o cálculo de horas em formato decimal.
Nossa coluna explorada foi a [Tempo Dec]

2. No nosso exemplo, a Medida criada para apresentar somente horas reflete um total de:

3. Vamos a Prática!
Precisei adaptar a lógica e extrair os dias, transformando a apresentação da informação do seguinte modo:

A Medida foi desenvolvida por meio de variáveis e, possui 05 blocos de desenvolvimento, vamos comentá-los:
Bloco 1: Extrair o inteiro da hora que está em formato [Tempo Decimal].
VAR Vl = SUM ( fDados[Tempo Dec] ) • realizando a soma total do tempo
VAR vHr = INT(Vl)
reservando apenas o inteiro da soma do tempo, que é a “hora”
Com a Variável vHr tempos o total de Horas
Bloco 2: Extrair os Segundos de Horas da diferença decimal do tempo [Vl] e calcular os Minutos e Segundos, posteriormente obter o total em horas
VAR vSegHora = (Vl-vHr)*3600
Reservamos a diferença decimal do tempo [Vl] e o inteiro da hora [vHr] e depois multiplicar por 3600 segundos que equivale a 1 hora.

VAR vMinDec = Divide(vSegHora,60)
Como já temos a hora em segundos, precisamos extrair os minutos. Portanto, dividimos por 60, pois 01 hora possui 60 minutos.

VAR vMin = INT(vMinDec)
Agora que já temos os Minutos em modo decimal, precisamos reservar o inteiro dele, que será nosso minutos.

VAR vSegDec = (vMinDec-vMin)*60
Nesse cálculo, vamos obter a diferença dos minutos decimais e o seu inteiro para extrair os segundos.

VAR vSeg = ROUND ( vSegDec, 0 )
Por último, vamos reservar o arredondamento dos Segundos da nossa

Com o bloco 1 e bloco 2 temos o total de horas

Bloco 3: Nesse bloco, iremos calcular os dias
VAR vDiasDec = DIVIDE(vHr,24)
Para obter os dias, chamamos a variável [vHr], construída no bloco 1, que são as horas por inteiro e dividimos por 24, que é o total de horas em um dia.


VARdd = IF(vHr>=24, INT(vDiasDec), 0)
Usamos o a Função IF, para extrair os dias inteiros, onde:
Se vHr>=24, termos 1 dia ou mais. Então, extrairmos os dias com função [INT(vDiasDec)]
Se não for, significa que é menor que 24 horas. Então, significa que não haverá dias somente horas, portanto pedimos que retorne 0.
Essa variável é o pulo do Gato!

Bloco 4: Nesse bloco, iremos calcular as Horas.
VAR hh = INT((vDiasDec-dd)*24)
Vamos calcular a nossa hora, pegando o inteiro da diferença de [vDiasDec] pelo resultado da variavel [dd] multiplicando 24 horas.

Bloco 5: Chegamos no Final, já temos todos os cálculos necessário.
E Rafael, o que é preciso agora?