Ir para conteúdo
  • 0

ajuda com transpor dentro do power quey


josuvaladao
Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Membros

Olá,

Boa tarde! Estou com uma grande dúvida e já tentei de tudo para resolvê-la, inclusive conversei com o ChatGPT. Será que alguém poderia me ajudar?

A minha dúvida é a seguinte: Eu tenho uma coluna B, da qual eu preciso transpor os dados cuja na mesma linha da coluna A esteja em vazio. e este dado que sera transposto deve ir  para a coluna C, baseado na linha após o horário da coluna B. segue a imagem e o excel com power query em anexo

Agradeço qualquer ajuda que possa ser oferecida!

01-01-23 a 31-03-23.xls

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • Membros
  • Solução

@josuvaladao;

Segue a solução e o código em M.

let
    Fonte = Excel.Workbook(File.Contents(vCaminho), null, true),
    #"Coleta de Pontos Originais1" = Fonte{[Name="Coleta de Pontos Originais"]}[Data],
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(#"Coleta de Pontos Originais1", [PromoteAllScalars=true]),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Cabeçalhos Promovidos",{{"DIA / MÊS", type text}, {"PONTO", type time}}),
    #"Preenchido Abaixo" = Table.FillDown(#"Tipo Alterado",{"DIA / MÊS"}),
    #"Linhas Agrupadas" = Table.Group(#"Preenchido Abaixo", {"DIA / MÊS"}, {{"Table", each _, type table [#"DIA / MÊS"=nullable text, PONTO=nullable time]}, {"Rows", each Table.RowCount(_), Int64.Type}}),
    #"Adicionar tabela transposta" = Table.AddColumn(#"Linhas Agrupadas", "Transpose Table", each Table.Transpose(Table.SelectColumns([Table], "PONTO")), type table),
    ListaColunas = 
        let
            MaxRow = List.Max(#"Adicionar tabela transposta"[Rows]),
            ListaFinal = List.Transform({1 .. MaxRow}, each "Column" & Text.From(_)) 
        in
            ListaFinal,
    #"Transpose Table Expandido" = Table.ExpandTableColumn(#"Adicionar tabela transposta", "Transpose Table", ListaColunas, ListaColunas),
    #"Colunas Removidas" = Table.RemoveColumns(#"Transpose Table Expandido",{"Table", "Rows"})
in
    #"Colunas Removidas"

 

Transpor colunas power quey.xlsx

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

  • 0
  • Membros
7 horas atrás, josuvaladao disse:

Olá,

Boa tarde! Estou com uma grande dúvida e já tentei de tudo para resolvê-la, inclusive conversei com o ChatGPT. Será que alguém poderia me ajudar?

A minha dúvida é a seguinte: Eu tenho uma coluna B, da qual eu preciso transpor os dados cuja na mesma linha da coluna A esteja em vazio. e este dado que sera transposto deve ir  para a coluna C, baseado na linha após o horário da coluna B. segue a imagem e o excel com power query em anexo

Agradeço qualquer ajuda que possa ser oferecida!

01-01-23 a 31-03-23.xls 230 kB · 1 download

Se entendi direito vc quer os 4 horários do ponto correto?

A melhor situação seria vc replicar a data, e após isso usar uma base em modelo tabular pra realizar suas medidas.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Segue proposta de solução:

let
    Fonte = Excel.Workbook(File.Contents("SeuCaminho\01-01-23 a 31-03-23.xlsx"), null, true),
    Tabela1_2_Table = Fonte{[Item="Tabela1_2",Kind="Table"]}[Data],
    AlteraTipoDados = Table.TransformColumnTypes(Tabela1_2_Table,{{"DIA / MÊS", type date}, {"Intervalo de texto", type time}}),
    PreencheParaBaixo = Table.FillDown(AlteraTipoDados,{"DIA / MÊS"}),
    FiltraLinhasNull = Table.SelectRows(PreencheParaBaixo, each ([Intervalo de texto] <> null)),
    AdicionaIndice = Table.AddIndexColumn(FiltraLinhasNull, "Índice", 1, 1, Int64.Type),
    AgrupaLinhas = Table.Group(AdicionaIndice, {"DIA / MÊS"}, {{"Teste", each _, type table [#"DIA / MÊS"=nullable date, Intervalo de texto=nullable time, Índice=number]}, {"Linhas", each Table.RowCount(_), Int64.Type}}),
    ExpandeDados = Table.ExpandTableColumn(AgrupaLinhas, "Teste", {"Intervalo de texto", "Índice"}, {"Intervalo de texto", "Índice"}),
    IndiceModulo = Table.AddColumn(ExpandeDados, "Personalizar", each Number.Mod([Índice]-1,[Linhas]+1)),
    RemoveColunasAuxiliares = Table.RemoveColumns(IndiceModulo,{"Índice", "Linhas"}),
    PivoteiaColuna = Table.Pivot(Table.TransformColumnTypes(RemoveColunasAuxiliares, {{"Personalizar", type text}}, "pt-BR"), List.Distinct(Table.TransformColumnTypes(RemoveColunasAuxiliares, {{"Personalizar", type text}}, "pt-BR")[Personalizar]), "Personalizar", "Intervalo de texto")
in
    PivoteiaColuna

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...