Página 1 de 1

Base (fato) com cabeçalho de datas entre os dados

Enviado: 06 Jun 2020 às 16:06
por DouglasHerrera
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

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 08 Jun 2020 às 10:48
por babdallas
Anexa um exemplo com dados fictícios, por favor.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 08 Jun 2020 às 14:55
por DouglasHerrera
Enviei um arquivo, onde possui 2 bases unidas, sendo da semana 1 e da semana 2.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 08 Jun 2020 às 18:05
por babdallas
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?

Base (fato) com cabeçalho de datas entre os dados

Enviado: 09 Jun 2020 às 07:58
por DouglasHerrera
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.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 09 Jun 2020 às 08:30
por babdallas
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.

Base (fato) com cabeçalho de datas entre os dados

Enviado: 10 Jun 2020 às 22:20
por DouglasHerrera
Boa noite!
Esse anexo não é o mesmo que enviei? Pois não identifiquei alterações nas colunas.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 11 Jun 2020 às 10:33
por babdallas
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.

Base (fato) com cabeçalho de datas entre os dados

Enviado: 11 Jun 2020 às 12:17
por DouglasHerrera
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?

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 11 Jun 2020 às 15:04
por babdallas
Porque uma semana tem que ficar embaixo da outra na mesma planilha? Porque cada semana não fica em planilha (aba) diferente?

Base (fato) com cabeçalho de datas entre os dados

Enviado: 11 Jun 2020 às 18:25
por DouglasHerrera
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.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 11 Jun 2020 às 18:52
por babdallas
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.

Base (fato) com cabeçalho de datas entre os dados

Enviado: 11 Jun 2020 às 19:04
por DouglasHerrera
Olá,

Creio que a solução está neste védeo: https://www.youtube.com/watch?v=pIe8XdCbbMY

Muito obrigado!

Base (fato) com cabeçalho de datas entre os dados

Enviado: 12 Jun 2020 às 13:39
por DouglasHerrera
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.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 12 Jun 2020 às 15:35
por babdallas
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.

Base (fato) com cabeçalho de datas entre os dados

Enviado: 12 Jun 2020 às 18:52
por DouglasHerrera
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"

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 12 Jun 2020 às 21:10
por babdallas
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.

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 13 Jun 2020 às 10:48
por DouglasHerrera
Olá,

Desculpe a minha ignorância, mas sou iniciante e ainda não consegui.

No momento, fiz os processos abaico, Qual a próxima etapa?

Imagem

Re: Base (fato) com cabeçalho de datas entre os dados

Enviado: 14 Jun 2020 às 19:11
por babdallas
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.

Base (fato) com cabeçalho de datas entre os dados

Enviado: 15 Jun 2020 às 07:49
por DouglasHerrera
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!