none
Coluna com valor randômico RRS feed

  • Pergunta

  • Olá Pessoal, tudo bem?

    Seguinte: criei um pacote relativamente simples. Pega dados de uma base e grava em outra, porém, em uma das colunas "Source", preciso criar dinamicamente números randômicos para preenchê-la.

    Imaginem a seguinte fonte de dados (Source), original, da forma que está no banco de dados e preciso adicionar a coluna "RandonID" ao Source.

    O "Destination" precisa obrigatoriamente receber essa coluna adicional, pois, faz parte da estrutura da tabela de destino dos dados. Acho que estou quase chegando à solução, mas parei pelo seguinte motivo:

    Na parte em verde, está funcionando tudo corretamente. No quadro vermelho é onde eu tento criar o código randômico que estão causando dois problemas:

    1. O código é gerado somente uma vez, ou seja, preenche uma linha; Obs.: significa que o código do script está correto, certo?!?!?
    2. Ao invés de o Merge funcionar adicionando uma coluna e um código randômico para cada registro ele está adicionando a coluna e fazendo como se fosse um Union, figura abaixo:

    Desde já agradeço a atenção de todos.

    Abraços

    Miguel Sotti


    Miguel Sotti Systems Analyst E-mail: m_sotti@hotmail.com Website: http://msotti.blogspot.com

    terça-feira, 10 de julho de 2012 20:36

Respostas

  • Bom dia Eduardo,

    Obrigado pela atenção. Felizmente consegui resolver o problema.

    Na realidade o código que eu estava precisando usar era exatamente esse "NEWID()", postei o randômico só para exemplificar. No meu caso eu não poderia gerar o ID via banco como vc sugeriu pq estou usando o objeto UNPIVOT fazendo com que 1 linha passe a ser Qtd de Linhas X Qtd de colunas e após essa transformação eu tinha que inserir o ID.

    De qualquer forma eu resolvi configurando corretamente o Script Component. Eu estava tentando usá-lo como "Source" e para minha necessidade tinha que configurá-lo como "Transformation". A configuração foi bem simples. Adicionei ao objeto uma coluna de output e o código ficou assim:

    public override void Input0_ProcessInputRow(Input0Buffer Row)

    {

    Row.UUID =

    Guid.NewGuid().ToString();

    }

    Lembrando que o Script Component foi adicionado após o UNPIVOT fazendo com que uma nova coluna fosse adicionada ao "Dataset".

    Eduardo, valeu


    Miguel Sotti Systems Analyst E-mail: m_sotti@hotmail.com Twitter: @msotti Skype: m_sotti Blog: http://msotti.blogspot.com


    • Editado Miguel Sotti sexta-feira, 13 de julho de 2012 14:54 Formatação do texto
    • Marcado como Resposta Miguel Sotti sexta-feira, 13 de julho de 2012 14:54
    sexta-feira, 13 de julho de 2012 14:52

Todas as Respostas

  • Miguel, boa tarde.

    Qual o objetivo da coluna com números randômicos? É apenas para torná-los únicos? Como vc gera tal número randômico, qual função do SQL vc está utlizando?

    Este processo de ETL vai ser executado várias vezes? Se sim, é possível que vc crie um número randômico que já exista em um registro anterior já inserido, ou seu processo já faz este tipo de verificação?

    Uma sugestão seria utilizar a função Newid() do SQL, inserindo em um campo do tipo uniqueIdentifier.

    Ex.

    select NEWID(), * from tabela  

    Abs.

    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quarta-feira, 11 de julho de 2012 18:20
  • Bom dia Eduardo,

    Obrigado pela atenção. Felizmente consegui resolver o problema.

    Na realidade o código que eu estava precisando usar era exatamente esse "NEWID()", postei o randômico só para exemplificar. No meu caso eu não poderia gerar o ID via banco como vc sugeriu pq estou usando o objeto UNPIVOT fazendo com que 1 linha passe a ser Qtd de Linhas X Qtd de colunas e após essa transformação eu tinha que inserir o ID.

    De qualquer forma eu resolvi configurando corretamente o Script Component. Eu estava tentando usá-lo como "Source" e para minha necessidade tinha que configurá-lo como "Transformation". A configuração foi bem simples. Adicionei ao objeto uma coluna de output e o código ficou assim:

    public override void Input0_ProcessInputRow(Input0Buffer Row)

    {

    Row.UUID =

    Guid.NewGuid().ToString();

    }

    Lembrando que o Script Component foi adicionado após o UNPIVOT fazendo com que uma nova coluna fosse adicionada ao "Dataset".

    Eduardo, valeu


    Miguel Sotti Systems Analyst E-mail: m_sotti@hotmail.com Twitter: @msotti Skype: m_sotti Blog: http://msotti.blogspot.com


    • Editado Miguel Sotti sexta-feira, 13 de julho de 2012 14:54 Formatação do texto
    • Marcado como Resposta Miguel Sotti sexta-feira, 13 de julho de 2012 14:54
    sexta-feira, 13 de julho de 2012 14:52