Como Criar medida que apresente Dias, Horas, Minutos e Segundos.

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?

  1. 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)

  1. 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

  1. 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)

  1. 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)

  1. Agora que já temos os Minutos em modo decimal, precisamos reservar o inteiro dele, que será nosso minutos.

VAR vSegDec = (vMinDec-vMin)*60

  1. Nesse cálculo, vamos obter a diferença dos minutos decimais e o seu inteiro para extrair os segundos.

VAR vSeg = ROUND ( vSegDec, 0 )

  1. 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)

  1. 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.

VAR dd = IF(vHr>=24, INT(vDiasDec), 0)

  1. Usamos o a Função IF, para extrair os dias inteiros, onde:

  2. Se vHr>=24, termos 1 dia ou mais. Então, extrairmos os dias com função [INT(vDiasDec)]

  3. 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)

  1. 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?

Agora, vamos arrumar esses cálculos para eles se apresentarem bonitinhos no visual.

  1. Para evitar, que nossa medida retorne apenas [1] dígito em cada cálculo, criaremos variáveis para melhorar a visualização. A função [LEN] pesquisará os cálculos. Se a variável contiver [1] dígito, será adicionado a ela um “0” a esquerda, caso contrário, queremos apenas a própria variável.

VAR vDD = IF ( LEN ( dd ) = 1, “0” & dd, dd )

VAR vHH = IF ( LEN ( hh ) = 1, “0” & hh, hh )

VAR vMM = IF ( LEN ( vMin ) = 1, “0” & vMin, vMin )

VAR vSS = IF ( LEN ( vSeg ) = 1, “0” & vSeg, vSeg )

  1. Vamos criar nossa variável Sucesso?

Fácil! Precisamos apenas concatenar as variáveis e convertê-las para inteiro.

VAR TMP = CONVERT ( vDD & vHH & vMM & vSS, INTEGER  )

  1. Pronto! Agora basta chamá-la

RETURN

TMP

E Agora, Rafael?

Simples, basta alterarmos o formato da medida para apresentar os Dias, Horas, Minutos e Segundos e posteriormente incluir no visual.

Espero que esse conteúdo tenha te ajudado. Se você gostou, deixe o like e compartilhe. 🙂