Ir para conteúdo
  • 0

Transformando coluna texto em hora.


Raphael Hamdan
Ir para solução Solucionado por Vitor Peralva ,

Pergunta

  • Alunos

Olá pessoal, boa noite. Todos bem? Espero que sim. 

Pessoal, por mais que o título pareça confuso, mas não é rs. O que acontece: Tenho uma tabela que realizo a extração do sistema, e um desses dados são horas, porém, o Power Bi não consegue lê-lo como tal. Já tentei realizar diversas modificação no Power Query, mas até onde vai meu conhecimento, não está dando. Tenho uma hipótese de que possa ser que o dado que vem do sistema seja "sujo" e o Power Bi está convertendo automaticamente para texto como se espera. Sendo assim, não consigo realizar nenhum tipo de alteração dessa tipagem para horas... Realmente, impossível. rs

Objetivo: Para as  três colunas (Tempo Total, Tempo de percurso e Tempo de atendimento), apenas preciso que elas tenham leitura de horas no Power BI, e que eu consiga dividir cada uma delas por 20. (Relacionado a 20 dias úteis, assim tenho a média de jornada dia).

Desde já, meu muito obrigado a todos vocês... Deixarei uma tabela de excel como exemplo.


Abraços,

Raphael Hamdan

Exemplo_Conversao_Horas.xlsx

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Boa Tarde, @Raphael Hamdan!

 

Seu problema, basicamente, é que não existe mais de 24 horas quando se fala de horas para o Power Query.

Para trabalhar com horas acima de 24 horas, você precisa utilizar o tipo duração, o qual vai indicar uma quantidade de dias, horas, minutos e segundos que o valor corresponde.

Você pode dividir a coluna extraindo a parte das horas, dividindo por 24, de modo a encontrar o dia e o módulo utilizando como as horas, juntando com os valores relativos aos minutos e segundos.

Numa análise rápida fiz da seguinte maneira:

 

let
    Fonte = Excel.Workbook(File.Contents("D:\Downloads\Exemplo_Conversao_Horas.xlsx"), null, true),
    Planilha_um_Sheet = Fonte{[Item="Planilha_um",Kind="Sheet"]}[Data],
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Planilha_um_Sheet, [PromoteAllScalars=true]),
    #"Converter em Duração" = Table.TransformColumns(#"Cabeçalhos Promovidos",{
        {"Tempo Total", each let vHoras = Number.FromText(Text.BeforeDelimiter(_, ":")) in Duration.FromText(Text.From(Number.IntegerDivide(vHoras,24)) & "." & Text.From(Number.Mod(vHoras,24)) & ":" & Text.AfterDelimiter(_,":"))}, 
        {"Tempo de Percurso", each let vHoras = Number.FromText(Text.BeforeDelimiter(_, ":")) in Duration.FromText(Text.From(Number.IntegerDivide(vHoras,24)) & "." & Text.From(Number.Mod(vHoras,24)) & ":" & Text.AfterDelimiter(_,":"))},
        {"Tempo de Atendimento", each let vHoras = Number.FromText(Text.BeforeDelimiter(_, ":")) in Duration.FromText(Text.From(Number.IntegerDivide(vHoras,24)) & "." & Text.From(Number.Mod(vHoras,24)) & ":" & Text.AfterDelimiter(_,":"))}}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Converter em Duração",{{"Tempo Total", type duration}, {"Tempo de Percurso", type duration}, {"Tempo de Atendimento", type duration}})
in
    #"Tipo Alterado"

 

Desta forma, sai do inicial:

 

image.thumb.png.5a358c8216c108be07bf80117d3d465b.png

 

Para chegar em:

 

image.thumb.png.db953491d983dcdbbcc11ad3d9bddd82.png

 

Espero que lhe ajude.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
15 horas atrás, Vitor Peralva disse:

Boa Tarde, @Raphael Hamdan!

 

Seu problema, basicamente, é que não existe mais de 24 horas quando se fala de horas para o Power Query.

Para trabalhar com horas acima de 24 horas, você precisa utilizar o tipo duração, o qual vai indicar uma quantidade de dias, horas, minutos e segundos que o valor corresponde.

Você pode dividir a coluna extraindo a parte das horas, dividindo por 24, de modo a encontrar o dia e o módulo utilizando como as horas, juntando com os valores relativos aos minutos e segundos.

Numa análise rápida fiz da seguinte maneira:

 

let
    Fonte = Excel.Workbook(File.Contents("D:\Downloads\Exemplo_Conversao_Horas.xlsx"), null, true),
    Planilha_um_Sheet = Fonte{[Item="Planilha_um",Kind="Sheet"]}[Data],
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Planilha_um_Sheet, [PromoteAllScalars=true]),
    #"Converter em Duração" = Table.TransformColumns(#"Cabeçalhos Promovidos",{
        {"Tempo Total", each let vHoras = Number.FromText(Text.BeforeDelimiter(_, ":")) in Duration.FromText(Text.From(Number.IntegerDivide(vHoras,24)) & "." & Text.From(Number.Mod(vHoras,24)) & ":" & Text.AfterDelimiter(_,":"))}, 
        {"Tempo de Percurso", each let vHoras = Number.FromText(Text.BeforeDelimiter(_, ":")) in Duration.FromText(Text.From(Number.IntegerDivide(vHoras,24)) & "." & Text.From(Number.Mod(vHoras,24)) & ":" & Text.AfterDelimiter(_,":"))},
        {"Tempo de Atendimento", each let vHoras = Number.FromText(Text.BeforeDelimiter(_, ":")) in Duration.FromText(Text.From(Number.IntegerDivide(vHoras,24)) & "." & Text.From(Number.Mod(vHoras,24)) & ":" & Text.AfterDelimiter(_,":"))}}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Converter em Duração",{{"Tempo Total", type duration}, {"Tempo de Percurso", type duration}, {"Tempo de Atendimento", type duration}})
in
    #"Tipo Alterado"

 

Desta forma, sai do inicial:

 

image.thumb.png.5a358c8216c108be07bf80117d3d465b.png

 

Para chegar em:

 

image.thumb.png.db953491d983dcdbbcc11ad3d9bddd82.png

 

Espero que lhe ajude.

Olá @Vitor Peralva, bom dia! Tudo bem? Espero que sim.

 

Vitor, primeiramente muito obrigado pela solução... Fantástica.

Realmente dividir os valores e depois extrair o texto antes do "." deixou em 100% o que eu necessitava! 

Muito mas muito obrigado mesmo, Vitor.

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