Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

União de tabelas de BD diferente

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         

Labels (1)
41 Replies
maiconmello
Creator III
Creator III

Exato, cria um QVD, mas para a leitura inicial é necessário fazer a conexão odbc.

Anonymous
Not applicable
Author

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.

maiconmello
Creator III
Creator III

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.

Anonymous
Not applicable
Author

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?

maiconmello
Creator III
Creator III

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 ?

Anonymous
Not applicable
Author

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
NOMEFANTASIACNPJCPF
MARIA SS1000NULL
JOAODDNULL2
JOSEEE2000NULL
MARCOSQQ300NULL
Banco Atual
RSOACIALCLINFANTASIACLINRINSCRICAOCLI
MARIA SS1000
JOAODD2
JOSEEE2000
OSVALDOTT7
MARCIAUU80

Resultado correto esperado

RSOACIALCLINFANTASIACLINRINSCRICAOCLI
MARIA SS1000
JOAODD2
JOSEEE2000
MARCOSQQ300
OSVALDOTT7
MARCIAUU80

Espero ter conseguido me explicar melhor  .

Obrigado.

Anonymous
Not applicable
Author

Acho que deveríamos usar o RESIDENT, o que acha?

fabionakashigue
Partner - Creator
Partner - Creator

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.


Anonymous
Not applicable
Author

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.

maiconmello
Creator III
Creator III

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.