Ir para conteúdo
  • 0

Mesclar somente as duas primeiras linhas


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

Pergunta

8 respostass a esta questão

Posts Recomendados

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

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

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

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...