Ir para conteúdo
  • 0

Mesclar somente as duas primeiras linhas


Tiago Bocardi
Ir para solução Solucionado por Vitor Peralva ,

Pergunta

  • Membros

Ola pessoal, tenho uma tabela com a primeira linha é o ano e a segunda é o mes gostaria de unificar as duas, ja tentei pivotar porem são mais de 1000 linhas e  o power query nao suporta para converter em colunas, alguem conhece alguma solução 

 

image.png.524b580e55cb59c5c763b664584d8bd6.png

 

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 1
  • Membros
  • Solução

Bom Dia, @Tiago Bocardi!

 

Ontem foi corrido por conta das crianças terem tido febre e, por conta disso, não gravei o vídeo.

Mas, fiz aqui rapidamente uma solução para que possa desenrolar o seu problema:

 

let
    Fonte = Excel.Workbook(File.Contents("C:\Users\vitor\Downloads\TESTE TOPO CLIENTE E FORNECEDOR (QTD_CMV_FAT_REC).xlsx"), null, true),
    Planilha1_Sheet = Fonte{[Item="Planilha1",Kind="Sheet"]}[Data],
    Base = Planilha1_Sheet,
    Personalizar1 = Table.FirstN(Base, 3),
    #"Tabela Transposta" = Table.Transpose(Personalizar1),
    #"Preenchido Abaixo" = Table.FillDown(#"Tabela Transposta",{"Column1"}),
    #"Personalização Adicionada" = Table.AddColumn(#"Preenchido Abaixo", "Personalizar", each if [Column1] = null then [Column3] else [Column1] & "|" & [Column3] & "/" & [Column2]),
    #"Outras Colunas Removidas" = Table.SelectColumns(#"Personalização Adicionada",{"Personalizar"}),
    TopoBase = Table.Transpose(#"Outras Colunas Removidas"),
    Personalizar2 = Table.Combine({TopoBase, Table.Skip(Base, 3)}),
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Personalizar2, [PromoteAllScalars=true]),
    #"Outras Colunas Não Dinâmicas" = Table.UnpivotOtherColumns(#"Cabeçalhos Promovidos", {"UNEG_EMPRESA", "CNPJ", "CLIENTE", "DS_GRUPOECONOMICO", "REDE", "SUBGRUPO"}, "Atributo", "Valor"),
    #"Dividir Coluna por Delimitador" = Table.SplitColumn(#"Outras Colunas Não Dinâmicas", "Atributo", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"Métrica", "Referência"})
in
    #"Dividir Coluna por Delimitador"

 

Só alterar a fonte e fazer as transformações adicionais que julgar necessárias.

Só observe que na verdade, você tem 3 cabeçalhos, por conta das métricas.

Como, se trata de uma tabela que cresce para a direita, o que não é ideal, procurei fazer de tal forma que continue funcionando mesmo com o crescimento da tabela para a direita.

 

Espero ter ajudado.

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Boa Noite, @Tiago Bocardi!

 

Você pode resolver da seguinte maneira:

1) Renomeie a etapa atual com um nome simples, sem espaços ou caracteres especiais, exemplo, Base.

2) Depois, mantenha somente as 2 primeiras linhas e faça as transformações até que tenha todas únidas numa única coluna;

3) Renomeie a última etapa que tenha a linha pronta, por exemplo, TopoBase, e adicione uma nova etapa, clicando no fx, por exemplo, e combine da seguinte maneira:

= Table.Combine({TopoBase, Table.Skip(Base, 2)})

Obs.: A etapa TopoBase deve ter os mesmos nomes de colunas (Column1, Column2, ...) para que as informações fiquem uma embaixo da outra.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
Em 14/04/2023 em 18:19, Vitor Peralva disse:

Boa Noite, @Tiago Bocardi!

 

Você pode resolver da seguinte maneira:

1) Renomeie a etapa atual com um nome simples, sem espaços ou caracteres especiais, exemplo, Base.

2) Depois, mantenha somente as 2 primeiras linhas e faça as transformações até que tenha todas únidas numa única coluna;

3) Renomeie a última etapa que tenha a linha pronta, por exemplo, TopoBase, e adicione uma nova etapa, clicando no fx, por exemplo, e combine da seguinte maneira:

= Table.Combine({TopoBase, Table.Skip(Base, 2)})

Obs.: A etapa TopoBase deve ter os mesmos nomes de colunas (Column1, Column2, ...) para que as informações fiquem uma embaixo da outra.

Professor muito Obrigado, mas não entendi a ultima etapa, como criar uma etapa topa como essa funcção de table.combine? e na primeira etapa eu filtrei as duas primeiras linhas conforme voce orientou, e como faço para mostrar todos os dados agora?

Editor avançado:

 

let
    Fonte = Excel.Workbook(File.Contents("D:\25 - Aramis\Base de dados\vendas aramis PRODUTO (QTD_CMV_FAT_REC)\vendas aramis PRODUTO (QTD_CMV_FAT_REC).xlsx"), null, true),
    Planilha1_Sheet = Fonte{[Item="Planilha1",Kind="Sheet"]}[Data],
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Planilha1_Sheet, [PromoteAllScalars=true]),
    Base = Table.TransformColumnTypes(#"Cabeçalhos Promovidos",{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"UN Faturado", type any}, {"Column7", type any}, {"Column8", type any}, {"Column9", type any}, {"Column10", type any}, {"Column11", type any}, {"Column12", type any}, {"Column13", type any}, {"Column14", type any}, {"Column15", type any}, {"Column16", type any}, {"Column17", type any}, {"Column18", type any}, {"Column19", type any}, {"Column20", type any}, {"Column21", type any}, {"Column22", type any}, {"Column23", type any}, {"Column24", type any}, {"Column25", type any}, {"Column26", type any}, {"Column27", type any}, {"Column28", type any}, {"Column29", type any}, {"Column30", type any}, {"Column31", type any}, {"Column32", type any}, {"CMV", type any}, {"Column34", type any}, {"Column35", type any}, {"Column36", type any}, {"Column37", type any}, {"Column38", type any}, {"Column39", type any}, {"Column40", type any}, {"Column41", type any}, {"Column42", type any}, {"Column43", type any}, {"Column44", type any}, {"Column45", type any}, {"Column46", type any}, {"Column47", type any}, {"Column48", type any}, {"Column49", type any}, {"Column50", type any}, {"Column51", type any}, {"Column52", type any}, {"Column53", type any}, {"Column54", type any}, {"Column55", type any}, {"Column56", type any}, {"Column57", type any}, {"Column58", type any}, {"Column59", type any}, {"Vlr Receita Liquida", type any}, {"Column61", type any}, {"Column62", type any}, {"Column63", type any}, {"Column64", type any}, {"Column65", type any}, {"Column66", type any}, {"Column67", type any}, {"Column68", type any}, {"Column69", type any}, {"Column70", type any}, {"Column71", type any}, {"Column72", type any}, {"Column73", type any}, {"Column74", type any}, {"Column75", type any}, {"Column76", type any}, {"Column77", type any}, {"Column78", type any}, {"Column79", type any}, {"Column80", type any}, {"Column81", type any}, {"Column82", type any}, {"Column83", type any}, {"Column84", type any}, {"Column85", type any}, {"Column86", type any}, {"Vlr Faturado Líquido", type any}, {"Column88", type any}, {"Column89", type any}, {"Column90", type any}, {"Column91", type any}, {"Column92", type any}, {"Column93", type any}, {"Column94", type any}, {"Column95", type any}, {"Column96", type any}, {"Column97", type any}, {"Column98", type any}, {"Column99", type any}, {"Column100", type any}, {"Column101", type any}, {"Column102", type any}, {"Column103", type any}, {"Column104", type any}, {"Column105", type any}, {"Column106", type any}, {"Column107", type any}, {"Column108", type any}, {"Column109", type any}, {"Column110", type any}, {"Column111", type any}, {"Column112", type any}, {"Column113", type any}}),
    #"Linhas Filtradas" = Table.SelectRows(Base, each ([UN Faturado] = "2021" or [UN Faturado] = "janeiro")),
    #"Tabela Transposta" = Table.Transpose(#"Linhas Filtradas"),
    #"Coluna Mesclada Inserida" = Table.AddColumn(#"Tabela Transposta", "Mês/Ano", each Text.Combine({Text.Proper([Column2]), "/", [Column1]}), type text),
    TopoBase = Table.Transpose(#"Coluna Mesclada Inserida")
in
    TopoBase

 

 

image.png.22eb1ddd8cbbc9f7174ee7cddc0aa48f.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Boa Tarde, @Tiago Bocardi!

 

Será que poderia disponibilizar o arquivo ou uma amostra dele?

Aí gravo um vídeo para o meu canal explicando como resolver este problema e você já tem o passo a passo.

 

Sobre a pergunta:

 

O Table.Combine vai combinar duas consultas, que, no caso, seriam esta parte do cabeçalho e as demais linhas da tabela original sem estas 2 primeiras linhas.

Depois que você ficou com as 2 primeiras linhas, deve tratá-las de modo a se tornarem uma única linha.
É que sem conhecer os dados, fica mais difícil definir um formato adequado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
2 horas atrás, Vitor Peralva disse:

Bom Dia, @Tiago Bocardi!

 

Quando me refiro ao arquivo, digo o xlsx.

Com o PBIX consigo vê o seu código, mas não consigo manipular os dados, já que não tenho o arquivo fonte e as visualizações quebram.

Desculpe faltou o arquivo. Segue anexo.

TESTE TOPO CLIENTE E FORNECEDOR (QTD_CMV_FAT_REC).xlsx

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
1 hora atrás, Vitor Peralva disse:

Bom Dia, @Tiago Bocardi!

 

Ontem foi corrido por conta das crianças terem tido febre e, por conta disso, não gravei o vídeo.

Mas, fiz aqui rapidamente uma solução para que possa desenrolar o seu problema:

Excelente, obrigado professor resolver aqui, espero que suas crianças fiquem bem logo!!! abçs

let
    Fonte = Excel.Workbook(File.Contents("C:\Users\vitor\Downloads\TESTE TOPO CLIENTE E FORNECEDOR (QTD_CMV_FAT_REC).xlsx"), null, true),
    Planilha1_Sheet = Fonte{[Item="Planilha1",Kind="Sheet"]}[Data],
    Base = Planilha1_Sheet,
    Personalizar1 = Table.FirstN(Base, 3),
    #"Tabela Transposta" = Table.Transpose(Personalizar1),
    #"Preenchido Abaixo" = Table.FillDown(#"Tabela Transposta",{"Column1"}),
    #"Personalização Adicionada" = Table.AddColumn(#"Preenchido Abaixo", "Personalizar", each if [Column1] = null then [Column3] else [Column1] & "|" & [Column3] & "/" & [Column2]),
    #"Outras Colunas Removidas" = Table.SelectColumns(#"Personalização Adicionada",{"Personalizar"}),
    TopoBase = Table.Transpose(#"Outras Colunas Removidas"),
    Personalizar2 = Table.Combine({TopoBase, Table.Skip(Base, 3)}),
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Personalizar2, [PromoteAllScalars=true]),
    #"Outras Colunas Não Dinâmicas" = Table.UnpivotOtherColumns(#"Cabeçalhos Promovidos", {"UNEG_EMPRESA", "CNPJ", "CLIENTE", "DS_GRUPOECONOMICO", "REDE", "SUBGRUPO"}, "Atributo", "Valor"),
    #"Dividir Coluna por Delimitador" = Table.SplitColumn(#"Outras Colunas Não Dinâmicas", "Atributo", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"Métrica", "Referência"})
in
    #"Dividir Coluna por Delimitador"

 

Só alterar a fonte e fazer as transformações adicionais que julgar necessárias.

Só observe que na verdade, você tem 3 cabeçalhos, por conta das métricas.

Como, se trata de uma tabela que cresce para a direita, o que não é ideal, procurei fazer de tal forma que continue funcionando mesmo com o crescimento da tabela para a direita.

 

Espero ter ajudado.

 

 

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