Ir para conteúdo
  • 0

HORAS: Erro nos itens acima de 24h quando formatado para hora ou duração


renato carvalhal
Ir para solução Solucionado por Michele ,

Pergunta

  • Alunos

 

Bom dia Pessoal, tudo bem?

Estou conectando em um arquivo json e a coluna WorkedTime veio como texto, quando altero a formatação no PowerQuery ele apresenta erro, tanto para hora quanto para duração para os itens que estão com mais de 24h 

O Contexto é o seguinte: Esses são dados de um gerenciador de projeto e preciso saber quantas e quem consumiu horas por projeto.. Essas horas são corridas oriundas de lançamento nas tarefas. Então não tem inicio e fim e sim horas trabalhada e lançadas no projeto. 

Coloquei os prints abaixo.. Desde já agradeço.

image.png.3150a47976d1f8dd4ff9c29be3e5677a.pngimage.png.366fca7051a1a4df964e92a827962855.pngimage.thumb.png.8ea1197a3228665f87019cf46c1cf5d2.png

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Olá @renato carvalhal!

O formato de hora vai pedir que o valor esteja até 23:59, o que extrapolar isso realmente vai dar erro.

Se você vai usar esse campo apenas para apresentação, você pode deixar ele como Texto e não tem prejuízo a meu ver, porém se você vai precisar somar, criar média, etc. então você vai precisar transformar o valor dessas horas em decimais e trabalhar com decimal nesses cálculos no DAX.

Se na apresentação você não puder mostrar em decimal (o que a meu ver é mais correto quando estamos falando de somas e médias), você pode formatar para apresentação em hora novamente.

Recentemente tive que trabalhar com horas e transformei tudo em decimal e na apresentação também ficou em decimal, os usuários também acharam que era melhor ter os valores em decimais caso eles quisessem trabalhar em cima depois, mas aí vai de cada usuário.

Dá uma olhada nesses vídeos e veja se te ajuda 🙂

Também tem essas aulas no curso:image.thumb.png.2e5a762ca6c8e2d8ea7bff8235cc1314.png

  • Like 2
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Veja se ajuda:

let
    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjOxMjS1MrRQitWJVjIwtjIwACKl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Worked Time" = _t]),
    FormataDuracao = 
        Table.TransformColumns(Fonte, {{"Worked Time", each 
        
                                        let 
                                            pHorasTotal = Number.From(Text.Start(_,2)),
                                            pDias = Text.From(Number.IntegerDivide(pHorasTotal,24)),
                                            pHoras = Text.From(Number.Mod(pHorasTotal,24))
                                        in
                                            if pHorasTotal > 23 then
                                                pDias & "." & pHoras & Text.End(_,6) 
                                            else 
                                                _, 
                                        type text}}),
    AlteraTipo = Table.TransformColumnTypes(FormataDuracao,{{"Worked Time", type duration}})
in
    AlteraTipo

 

20220428_FormatacaoDuracao_PowerQuery.pbix

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, Michele disse:

Olá @renato carvalhal!

O formato de hora vai pedir que o valor esteja até 23:59, o que extrapolar isso realmente vai dar erro.

Se você vai usar esse campo apenas para apresentação, você pode deixar ele como Texto e não tem prejuízo a meu ver, porém se você vai precisar somar, criar média, etc. então você vai precisar transformar o valor dessas horas em decimais e trabalhar com decimal nesses cálculos no DAX.

Se na apresentação você não puder mostrar em decimal (o que a meu ver é mais correto quando estamos falando de somas e médias), você pode formatar para apresentação em hora novamente.

Recentemente tive que trabalhar com horas e transformei tudo em decimal e na apresentação também ficou em decimal, os usuários também acharam que era melhor ter os valores em decimais caso eles quisessem trabalhar em cima depois, mas aí vai de cada usuário.

Dá uma olhada nesses vídeos e veja se te ajuda 🙂

Também tem essas aulas no curso:image.thumb.png.2e5a762ca6c8e2d8ea7bff8235cc1314.png

Origado pela ajuda e tempo despendido.. Hoje a noite vou ver os vídeos e se conseguir solucionar aviso aqui.. 😉

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, Bruno Abdalla de Souza disse:

Veja se ajuda:

let
    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjOxMjS1MrRQitWJVjIwtjIwACKl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Worked Time" = _t]),
    FormataDuracao = 
        Table.TransformColumns(Fonte, {{"Worked Time", each 
        
                                        let 
                                            pHorasTotal = Number.From(Text.Start(_,2)),
                                            pDias = Text.From(Number.IntegerDivide(pHorasTotal,24)),
                                            pHoras = Text.From(Number.Mod(pHorasTotal,24))
                                        in
                                            if pHorasTotal > 23 then
                                                pDias & "." & pHoras & Text.End(_,6) 
                                            else 
                                                _, 
                                        type text}}),
    AlteraTipo = Table.TransformColumnTypes(FormataDuracao,{{"Worked Time", type duration}})
in
    AlteraTipo

 

20220428_FormatacaoDuracao_PowerQuery.pbix 14 kB · 0 downloads

Cara obrigado!! Não vou conseguir testar agora, mas assim que conseguir solucionar eu volto aqui.. tmj

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...