Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tudo que estiver relacionado a tratamento de dados, Power Query editor e linguagem M
#55659
Olá, Senhores (as)

O sistema com que eu trabalho, permite extrair apenas uma base por semana, sendo que o cabeçalho desta base, possui colunas que informam a data de planejado e realizado.

Não encontrei nenhuma maneira que atende minha necessidade, pois se transformo as colunas em linhas, acabo comprometendo as informações de data da semana posterior.

Meu objetivo é manter apenas as colunas: Ano, Data, Origem, Destino, Produto, Transportadora, Volume Planejado e Volume Realizado.

Por favor, alguém poderia me ajudar na resolução deste problema?

Na imagem, maiores detalhes.

Coloquei a base de duas semanas juntas/agrupadas, pois é assim que elas são trabalhadas no Power Query, uma embaixo da outra.

Imagem
#55695
Anexa um exemplo com dados fictícios, por favor.
#55723
As datas estão sem os anos e notei que há virada de um ano para outro. Como saber a qual ano está se referindo?
#55754
O ano referido, é 2020.
Quando vou extrair o relatório do sistema, preciso informar a semana e o ano.
Existem datas de 2019, pois na empresa em que eu trabalho, as semanas são contadas de segunda-feira a domingo, logo a 1, iniciou-se dia 30/12/2019 e terminou dia 05/01/2020.

Lembrando que meu problema hoje, é devido a uma base entrar embaixo da outra no Power Query.

Existe opção de eu tratar uma semana, e ela servir de exemplo para as demais antes da junção?

Pois dessa forma, bastaria apenas eu transformar as colunas em linhas.

Segue anexo, com relatório de apenas uma semana.
Você não está autorizado a ver ou baixar esse anexo.
#55757
Veja que no PowerQuery eu gerei a TabelaFinal, com a junção das duas tabelas. Também gerei as 2 separadas (Dados1 e Dados2).
O problema foi a data com o ano. Na hora de transformar a data, acabou ficando erroneamente como 2020. Precisa tratar isso. Ou inserindo o ano antes na base de dados ou criando mais algumas etapas de ETL para identificar se tem virada de ano nos dados. Mas creio que seja mais fácil inserir os anos na base de dados quando for o caso.
Você não está autorizado a ver ou baixar esse anexo.
#55836
Sim, é o mesmo. A Tabela estava no PowerQuery, Esqueci de jogar ela para a planilha. Veja lá no PowerQuery tudo o que eu fiz e os problemas do ano que eu falei.
Você não está autorizado a ver ou baixar esse anexo.
#55845
Nesse caso, eu posso remover a coluna de data e manter apenas a semana, pois já defini as datas corretas na dCalendario.

Mas de qualquer forma, terei que tratar cada base individualmente antes de aplicar a fórmula Table.Combine, certo?

Gostaria de saber se não existe uma forma que eu consiga tratar a base de uma semana, e ela servir de exemplo para as demais. Assim, eu conseguiria apenas atualizar automaticamente, pois as bases das semanas posteriores assumiriam a formatação correta, antes de se juntas com as das semanas anteriores.

Já ouvi falar que existe a opção de Transformar arquivos de exemplo (Transform Sample File), porém não sei como aplico isso.

Poderia me ajudar?
#55847
Porque uma semana tem que ficar embaixo da outra na mesma planilha? Porque cada semana não fica em planilha (aba) diferente?
#55852
As planilhas estão ficando separadas, porém no Power Query uma entra embaixo da outra, elas se juntam, pois estou utilizando a fórmula Excel.Workbook para atualizar automaticamente, de acordo com o caminho/pasta em que todas estão salvas.
#55854
Anexa o arquivo original então, onde cada semana está em uma planilha diferente.
Pensei que sua dificuldade estava em unir as tabelas que estavam uma embaixo da outra.
Coloque os dados originais e mostre como deseja o resultado final, por favor.
#55869
Boa tarde!
A orientação do vídeo não deu certo, segue os arquivos separados.

No resultado final, preciso ficar apenas com as colunas Data, Semana, Ano, Origem, Destino, Transportadora, Volume Planejado e Volume Realizado.
Você não está autorizado a ver ou baixar esse anexo.
#55872
Veja se ajuda. Tive que excluir um pouco de dados das tabelas originais para reduzir o tamanho do arquivo e poder mandar aqui.
Mude o caminho da origem dos arquivos e veja se funciona. Aqui funcionou. Coloquei os arquivos em uma pasta do computador e carreguei eles no PowerQuery pela conexão a uma Pasta.
Você não está autorizado a ver ou baixar esse anexo.
#55881
Olá,

Ainda não entendi, alterando a fonte, ficaria conforme abaixo. O que eu preciso fazer agora?

(tabela as table) as table =>

let
Fonte = tabela,
//Fonte = Excel.Workbook(File.Contents("C:\Users\dsanto12\Documents\BD Performance Inbound_W01.XLSX"))[Data]{0},
PromoveCabecalho = Table.PromoteHeaders(Fonte, [PromoteAllScalars=true]),
ColunasEmLinhas = Table.UnpivotOtherColumns(PromoveCabecalho, {"Semana", "Ano", "Formulário", "Demanda", "Origem", "Descrição ZT Partida", "Pátio Origem", "Descrição Pátio Orig", "Centro Origem", "Destino", "Descrição ZT Chegada", "UF Destino", "Pátio Destino", "Descrição Pátio Dest", "Centro Destino", "Pedido MOSAIC", "Item", "Cliente", "Nome Cliente", "Documento de vendas", "Item_1", "Produto", "Nome Produto", "Transportadora", "Nome Transportadora", "Frete", "Armazém", "Descrição Armazém", "Planejado", "UM Planejado", "Realizado", "UM Realizado", "Saldo", "UM Saldo", "Obs da demanda", "Pedido do Fornecedor", "Navio", "N. DI", "Porto", "Pedido Retorno Simbólico", "Item Retorno Simbólico", "Centro Toll Destino", "Documento de compras", "Item_2", "Pedido do Fornecedor_3", "Ped. Troca NF", "Item Ped. Troca NF"}, "Atributo", "Valor"),
DividirData_PLANREAL = Table.SplitColumn(ColunasEmLinhas, "Atributo", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), {"Data_Texto", "PLAN_REAL"}),
ExtraiData = Table.TransformColumns(DividirData_PLANREAL, {{"Data_Texto", each Text.AfterDelimiter(_, " ", {0, RelativePosition.FromEnd}), type text}}),
TipoAlterado = Table.TransformColumnTypes(ExtraiData,{{"Semana", Int64.Type}, {"Ano", Int64.Type}, {"Formulário", type text}, {"Demanda", Int64.Type}, {"Origem", type text}, {"Descrição ZT Partida", type text}, {"Pátio Origem", type text}, {"Descrição Pátio Orig", type text}, {"Centro Origem", Int64.Type}, {"Destino", type text}, {"Descrição ZT Chegada", type text}, {"UF Destino", type text}, {"Pátio Destino", type text}, {"Descrição Pátio Dest", type text}, {"Centro Destino", Int64.Type}, {"Pedido MOSAIC", Int64.Type}, {"Item", Int64.Type}, {"Cliente", Int64.Type}, {"Nome Cliente", type text}, {"Documento de vendas", Int64.Type}, {"Item_1", Int64.Type}, {"Produto", Int64.Type}, {"Nome Produto", type text}, {"Transportadora", Int64.Type}, {"Nome Transportadora", type text}, {"Frete", type number}, {"Armazém", type text}, {"Descrição Armazém", type text}, {"Planejado", Int64.Type}, {"UM Planejado", type text}, {"Realizado", type number}, {"UM Realizado", type text}, {"Saldo", type number}, {"UM Saldo", type text}, {"Obs da demanda", type text}, {"Pedido do Fornecedor", type text}, {"Navio", type text}, {"N. DI", type text}, {"Porto", type text}, {"Pedido Retorno Simbólico", type text}, {"Item Retorno Simbólico", Int64.Type}, {"Centro Toll Destino", type text}, {"Documento de compras", type text}, {"Item_2", Int64.Type}, {"Pedido do Fornecedor_3", type text}, {"Ped. Troca NF", type text}, {"Item Ped. Troca NF", Int64.Type}, {"Data_Texto", type text}, {"PLAN_REAL", type text}, {"Valor", type number}}),
DataCorretaComAno = Table.AddColumn(TipoAlterado, "Datas", each [Data_Texto] & "/" & (if [Semana] = 1 and Number.From(Text.End([Data_Texto],2))=12 then Text.From([Ano]-1) else Text.From([Ano]))),
RemoveColDataTexto = Table.RemoveColumns(DataCorretaComAno, "Data_Texto"),
#"Tipo Alterado" = Table.TransformColumnTypes(RemoveColDataTexto,{{"Datas", type date}})
in
#"Tipo Alterado"
#55882
No PowerQuery, há 2 consultas. Está eu você colocou é uma função, que retorna como resultado uma tabela corrigindo a sua base de dados. Nesta função você não precisa alterar.
O que você precisa fazer é:
1) Colocar as bases de dados todas em uma única pasta do seu computador.
2) No PowerQuery, há uma outra consulta. Lá você precisa alterar o caminho para a pasta que você irá criar no item 1 acima
Só isso.
#55952
1) Crie uma pasta no seu computador com os arquivos que são as bases de dados.
2) Abra o arquivo 120620_TratarVariasTabelas.xlsx.
3) Clique na Guia Dados.
4) No Consultas e Conexões, clique em Consultas e Conexões. Neste momento, irá aparecer uma janela do lado direito com dias consultas do PowerQuery.
5) Clique com o botão direito do mouse sobre a consulta 120620_W. Clique em Editar. Neste momento o PowerQuery será aberto.
6) Do lado direito, tem um Menu chamado Etapas Aplicadas. A primeira etapa se chama Fonte. DO lado direito dela há uma engrenagem. Clique nesta engrenagem e mude o local da pasta que você criou no item 1.
9) Clique em Atualiza Visualização.
10) Clique em Fechar e Carregar.
#55976
Bom dia!
Na verdade eu já possuía um arquivo pbix com dados e demais bases de cadastros, mas entendi o raciocínio, utilizei apenas a função que você criou, deu certo.

Eu excluí as etapas que estavam criadas e substituí pelas do seu arquivo.

Muito obrigado pela ajuda!
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord