Ir para conteúdo
  • 0

ajuda com transpor dentro do power quey


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

Pergunta

  • Alunos

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
  • Alunos
  • 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

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

  • 0
  • Alunos
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
  • Alunos

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

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...