Pergunta

Eu preciso de ajuda para descobrir um fluxo de trabalho e eu não tenho certeza de como fazê-lo ... Vamos dizer que eu estou transformando dados da Tabela à Tabela B. Tabela A (ETL?) Tem uma chave composta A principal .a + a.b + Ac, enquanto a Tabela B tem apenas uma coluna de identidade preenchido automaticamente. Como posso mapear as chaves compostas de A volta às identidades criadas ao inserir em B?

De preferência, eu gostaria de não ter quaisquer colunas na tabela B relacionadas com chave composta de uma, porque há muitas outras tabelas que precisam se submeter a mesma operação, mas não têm a mesma estrutura de chave composta.

Foi útil?

Solução

Pergunte-se exatamente o que você precisa as chaves originais para. A resposta pode variar dependendo do sistema de origem. Isso pode levar você a manter uma coluna de "sistema de origem" e uma coluna de "chaves de origem originais". Este último pode precisar de ser uma lista delimitada por vírgula das chaves originais.

Ou, você pode achar que você nunca realmente precisa mapear volta, por isso não precisa manter qualquer coisa.

Outras dicas

Se eu entendi corretamente, você não pode se relacionar registros da tabela B de volta para os registros da tabela A, após a transformação, a menos que você de alguma forma capturar um mapeamento entre chave composta de A e identificador de B durante a transformação.

Você pode adicionar uma coluna para um e pré-calcular os identificadores para ser usado ao inserir em B. Então você teria um mapeamento. Isso também pode ser feito usando uma tabela de mapeamento separado, se você não quiser adicionar uma coluna para um.

Se você não deseja substituir a atribuição padrão de identificadores, então você terá que capturá-los durante a carga. A Oracle fornece a cláusula returning para insert em PL / SQL para esta finalidade. Eu não tenho certeza sobre o SQL Server. Também pode ser possível fazer isso usando um disparador em B para inserir em uma tabela de mapeamento separada ou atualizar uma coluna de A. Apesar de que é provável que abrandar a sua carga consideravelmente.

Se nada mais, você pode criar colunas adicionais em B para segurar as chaves de A durante a carga, consulta os mapeamentos em uma mesa separada depois, e em seguida, solte as colunas extras.

Espero que ajuda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top