Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde.
Tenho aqui na empresa uma solicitação cuja qual eu ainda não tratei.
Preciso trabalhar com vendas de dois bancos de dados. Um desses bancos de dados é de um antigo ERP meu, e o outro BD é do meu ERP atual.
Vamos lá, tenho as seguintes tabelas:
BD antigo (Viasoft):
Tabela: PPESCLI (possui campos de dados do cliente como, cnpj, razão social, nome fantasia etc..)
BD atual (Globus)
Tabela CODCLI (possui campos de dados do cliente como, cnpj, razão social, nome fantasia etc..)
Estou tratando aqui apenas uma das tabelas que tenho, que seriam em torno de 21 tabelas com informações de notas fiscais, vendas, quantidades, valores...
Preciso de uma força para saber qual a melhor maneira de tratar esses dados e unifica-los.
Obrigado comunidade
Exato, cria um QVD, mas para a leitura inicial é necessário fazer a conexão odbc.
Eu tenho já o DSN de sistema criado. A parte de criar o QVD na extração usando o STORE e DROP está tranquilo. O que preciso agora é na transformação tratar esses dados, ou seja unir as tabelas.
São duas situações ai: Na mesma tabela do BD antigo vou unir os campos CGC e CPF criando o CNPJCPF por exemplo. Então do BD atual irei renomear o campo NRINSCRICAOCLI para CNPJCPF. Pela lógica após isso eu iria concatenar, certo? Porém se concateno o Sense traz a soma de linhas das duas tabelas.
manda um print.
Embora concatenate tem a mesma função do union do SQL.
Ele vai apendar linhas.
Exemplo
Tabela 1 tenho 10 registros ou seja 10 linhas.
Tabela 2 tenho 5 registros ou seja 5 linhas.
Quando concatenar essas tabelas, terei uma única tabela com 15 linhas.
A transformação é relativamente simples ao meu entender.
Sempre os campos que forem comuns entre uma tabela e outra , sempre deixe com a mesma nomenclatura.
Assim eles vão ficar estruturados.
Maicon, entendi o que quiz dizer.
Vejamos o que eu tenho aqui.
BD antigo 1939
BD atual 977
Nessas linhas irá ocorrer de serem o mesmo CNPJ ou CPF, certo?
O que está acontecendo que após o concatenate eu tenho 2916 linhas, ou seja, a soma.
O que eu entendi que pela lógica eu deveria ter os 1939 mais alguns registros do 977, entendeu?
Deixa eu ver se eu entendi agora :
O banco novo , você tem CNPJ ou CPF que exista no antigo , certo ?
Teoricamente o correto é ter 2916 linhas.
Agora precisa entender sua regra, leio o banco antigo.
Ao ler o banco novo, se existir registro no antigo, não carrega novamente os mesmos dados do novo.
Seria isso ?
Basicamente isso ai mesmo.
Leio os registros do banco antigo, legal, até ai tranquilo.
Agora vou ler os registros do banco novo, pronto.
Veja um exemplo:
Banco antigo | |||
NOME | FANTASIA | CNPJ | CPF |
MARIA | SS | 1000 | NULL |
JOAO | DD | NULL | 2 |
JOSE | EE | 2000 | NULL |
MARCOS | 300 | NULL | |
Banco Atual | |||
RSOACIALCLI | NFANTASIACLI | NRINSCRICAOCLI | |
MARIA | SS | 1000 | |
JOAO | DD | 2 | |
JOSE | EE | 2000 | |
OSVALDO | TT | 7 | |
MARCIA | UU | 80 | |
Resultado correto esperado | |||
RSOACIALCLI | NFANTASIACLI | NRINSCRICAOCLI | |
MARIA | SS | 1000 | |
JOAO | DD | 2 | |
JOSE | EE | 2000 | |
MARCOS | 300 | ||
OSVALDO | TT | 7 | |
MARCIA | UU | 80 |
Espero ter conseguido me explicar melhor .
Obrigado.
Acho que deveríamos usar o RESIDENT, o que acha?
Cara você vai ter que tratar esse qvd antigo em um campo só.
Existem diversas formas de tratar esse seu qvd. Vou postar um exemplo
Historico:
LOAD NOME As RSOACIALCLI,
FANTASIA As NFANTASIACLI,
CNPJ As NRINSCRICAOCLI
FROM x WHERE NOT ISNULL(CNPJ)
CONCATENATE
LOAD NOME As RSOACIALCLI,
FANTASIA As NFANTASIACLI,
CPF As NRINSCRICAOCLI
FROM x WHERE NOT ISNULL(CPF)
Store Historico Into ...
FINAL:
Load *
ERP NOVO
JOIN OU CONCATENATE
Load *
ERP VELHO
Mas não entendi muito bem pq sua base atual contém as mesmas informações que o ERP antigo. Caso seja isso mesmo da um join nas 2 tabelas, senão usa concatenate mesmo.
Fábio, pegamos do banco antigo todos os clientes que eram ativos e cadastramos no novo. Agora irei somar as vendas do banco antigo com o novo para analisar o crescimento das vendas, por isso a necessidade de carregar os dados dos dois bancos sem perder nenhum dado.
O que me preocupa que vou tabelas e campos diferentes mais pra frente.
Eu sempre soube que essa aplicação ia me dar trabalho, mas vamos a luta.
Diego então siga a mesma logica que estava fazendo, leia o antigo concatena com o novo.
Interessante mapear as tabelas necessita carregar , e ja veja os campos que podem se casar, ou seja permanecer com a mesma nomenclatura.