Reutilização de Transformação
Introdução
Como uma transformação pode ser referenciada como uma etapa de operação em diversas operações ao mesmo tempo, é importante compreender as ramificações e a complexidade por trás da reutilização de transformações.
O processo envolvido na referência a uma transformação depende se o esquema é definido em uma transformação ("de propriedade da transformação") ou herdado de uma atividade ("de propriedade da atividade"):
- Esquemas de propriedade da transformação: Quando um esquema é definido diretamente em uma transformação, ele pertence à transformação e fazer referência à transformação é simples, conforme descrito em Reutilização de componente.
- Esquemas de propriedade da atividade: Ao contrário dos esquemas de propriedade da transformação, quando você faz referência a uma transformação que herda pelo menos um esquema de uma atividade, a ordem em que as etapas de uma operação são configuradas controla como os esquemas são propagados pelas referências de transformação e determina quais mensagens são apresentadas na UI. Essas mensagens ajudam você a escolher quais esquemas usar e facilitam a criação de uma nova transformação quando apropriado. Depois de fazer referência a uma transformação, talvez seja necessário atualizar os esquemas na transformação original ou referenciada para resolver erros de validação, conforme descrito nesta página.
Como esta página é complementar a Reutilização de componentes, ele não repete as informações contidas nessa página. Consulte Reutilização de componentes para obter as definições da terminologia de reutilização de componentes e como copiar, recortar e colar componentes (incluindo transformações).
Ao fazer referência a uma transformação, é útil ter em mente que tanto a transformação original quanto a transformação recém-referenciada referem-se ao mesmo componente. Quaisquer alterações em qualquer uma das transformação afetam todas as instâncias da transformação referenciada, incluindo alterações na forma como os esquemas são definidos. Se uma transformação herdar um esquema de uma atividade adjacente e você criar uma referência a essa transformação em outra operação, a transformação recém-referenciada conterá uma referência ao esquema original, apesar da atividade não ser adjacente à transformação referenciada.
Quando isso ocorrer, você deverá retificar as alterações atualizando os esquemas e resolvendo quaisquer erros de validação.
Caso de Uso
O caso de uso pretendido para poder reutilizar uma transformação que herda esquemas devidos a atividades é quando você tem várias fontes nas quais deseja usar mapeamentos semelhantes para o mesmo destino.
Por exemplo, você pode ter dados de origem fornecidos por meio de esquemas de propriedade da atividade no Endpoint A e no Endpoint B. Se a estrutura dos dados de origem for semelhante, talvez você queira reutilizar os mapeamentos de transformação antes de atingir o destino do Endpoint C. Neste Nesse caso, você pode primeiro criar a operação usando o Endpoint A como origem e, em seguida, copiar sua transformação para reutilizá-la em outra operação usando o Endpoint B como origem.
Embora também seja possível reutilizar uma transformação que herde um esquema de destino de propriedade da atividade, quaisquer mapeamentos de transformação originais serão removidos de uma nova cópia da transformação criada quando o esquema de destino for atualizado.
Melhores Práticas
Recomendamos seguir estas práticas recomendadas ao reutilizar transformações que herdam pelo menos um esquema de uma atividade.
Adicionar Atividades Antes de Adicionar uma Transformação
Quando você pretende reutilizar uma transformação com esquemas de propriedade da atividade em uma operação, sempre adicione as atividades à operação primeiro, antes de adicionar a transformação à operação. A ordem recomendada é demonstrada por Cenários A e B mais adiante nesta página.
Quando você não segue essa prática recomendada e, em vez disso, primeiro adiciona uma transformação referenciada a uma operação e depois adiciona uma atividade adjacente fornecendo um esquema, isso faz com que todas as instâncias da transformação referenciada sejam atualizadas automaticamente com o novo esquema. Isso pode fazer com que transformações referenciadas anteriormente válidas se tornem inválidas e os mapeamentos não possam mais ser exibidos.
Para se recuperar dessa situação, em cada transformação referenciada afetada, abra a transformação e use o link que aparece no cabeçalho da transformação para atualizar o esquema e criar uma cópia independente da transformação com seus esquemas originais. Os mapeamentos reaparecerão quando os esquemas originais forem substituídos.
Resolver Erros de Mapeamento
Depois de atualizar um esquema de propriedade de atividade incompatível em uma transformação referenciada, você poderá descobrir que a cópia da transformação independente criada reteve mapeamentos que agora são inválidos devido a campos inexistentes da transformação referenciada anterior. Os mapeamentos existentes que fazem referência a um nó ou campo de origem ou destino que não existe mais não são mais visíveis na cópia independente da transformação, pois não são mais válidos.
Esses erros não são exibidos em uma transformação aberta, mas podem ser identificados no painel do projeto.
Para resolver esses erros de mapeamento, recomendamos remover todos os mapeamentos inválidos usando a opção de menu de ações do nó raiz de destino Remover todos os mapeamentos inválidos.
Cenários
Esses cenários são usados para descrever e demonstrar o processo de referência a uma transformação que herda um esquema de uma atividade. As Transformações podem ser referenciadas em uma operação arrastando e soltando ou colando uma operação que foi copiada ou recortada (consulte Criar uma referência de componente em Reutilização de componentes).
Cada cenário refere-se ao posicionamento de transformações e atividades na quadro de design como etapas de uma operação.
Todos esses cenários são baseados em uma operação original que utiliza uma transformação em que os esquemas de solicitação e resposta são herdados de atividades inicialmente adjacentes.
Nota
O comportamento nesses cenários também se aplica ao lado do esquema relevante se apenas um esquema estiver sendo herdado pela transformação.
Na operação original (Original Operation), uma atividade de consulta do Amazon Redshift (Query Accounts) fornece um esquema de solicitação e uma atividade Amazon Redshift Upsert (Upsert Accounts) fornece um esquema de resposta para a transformação (Transformation):
A ordem em que as etapas de uma operação são adicionadas controla como os esquemas são propagados pelas transformações e determina quais mensagens são apresentadas na UI. A tabela abaixo resume os possíveis cenários e as etapas nas quais uma operação com referência de transformação poderia ser configurada. Cada cenário é descrito em uma seção a seguir, conforme link na tabela.
Cenário | Resumo | Passos |
---|---|---|
Cenário A | Uma transformação referenciada é adicionada ao lado de uma atividade com um esquema definido |
|
Cenário B | Uma transformação referenciada é adicionada ao lado de uma atividade sem esquema definido |
|
Cenário C | Uma atividade com um esquema definido é adicionada ao lado de uma transformação referenciada |
|
Cenário D | Uma atividade sem esquema definido é adicionada ao lado de uma transformação referenciada |
|
Cenário A: Transformação Referenciada Adicionada ao Lado de uma Atividade com um Esquema Definido
No Cenário A, duas novas atividades do Amazon Redshift são primeiro adicionadas a uma nova operação e totalmente configuradas (por meio da conclusão das etapas do esquema de dados): Query Companies e Upsert Persons. Em seguida, a transformação de Operação Original é adicionada como referência entre as duas atividades.
A referência de transformação recém-adicionada é válida, sem erros de validação. No entanto, a operação em si é inválida:
O erro de validação da operação indica que os esquemas da transformação não correspondem às estruturas de esquema fornecidas pelas atividades adjacentes da transformação:
Corrigir Erros de Validação
Para corrigir o problema de validação da operação, abra a transformação. Uma mensagem indicando uma incompatibilidade é exibida no cabeçalho da transformação. Clique no link da mensagem para atualizar o esquema relevante:
Nota
Apenas uma mensagem é exibida por vez. Se ambos os esquemas forem incompatíveis, use o link na mensagem para atualizar um dos esquemas primeiro e criar uma cópia da transformação (abordada abaixo). Depois de criar uma cópia da transformação, outra mensagem será exibida, que poderá ser usada para atualizar o outro lado do esquema.
Ao clicar no link para atualizar o esquema, uma caixa de diálogo será exibida solicitando que você crie uma cópia da transformação como um componente novo e independente:
Clicar em Continuar separará essa transformação de outros locais onde ela é referenciada e criará e abrirá um novo componente de transformação que usa esquemas definidos de acordo com a precedência padrão. Ou seja, a nova transformação utiliza primeiro um esquema herdado de uma atividade adjacente à nova transformação. Se não houver nenhuma atividade adjacente presente ou se um esquema não estiver definido na atividade, a transformação usará um esquema definido na nova transformação. A nova transformação não está mais conectada à transformação anterior por referência ou a quaisquer esquemas herdados pelas atividades adjacentes da transformação anterior.
Se ambos os esquemas tiverem uma incompatibilidade ou se a transformação não for mais referenciada por nenhuma outra operação, a transformação recém-criada será criada com outra mensagem indicando uma incompatibilidade de esquema no outro lado da transformação. Clique novamente no link da mensagem para atualizar o esquema relevante:
Uma caixa de diálogo indica que o esquema atual será removido da transformação e a transformação herdará o esquema de uma atividade adjacente a esta transformação:
Clicar em Continuar atualiza o esquema na transformação atual:
A transformação poderá então ser inválida devido às alterações de esquema no lado da atividade (por exemplo, se os campos forem renomeados ou não estiverem mais presentes):
Mapeie os campos de destino conforme desejado para configurar a transformação.
Nota
Se os erros de validação da transformação permanecerem, pode haver mapeamentos existentes da transformação referenciada anterior que são retidos pela cópia da transformação, fazendo com que a transformação seja inválida. Para resolver veja a seção Mapeamentos de Transformação mais adiante nesta página.
Cenário B: Transformação Referenciada Adicionada Próximo a uma Atividade Sem um Esquema Definido
No Cenário B, duas novas atividades Variáveis são primeiro adicionadas a uma nova operação: Ler da Variável e Escrever na Variável. Cada atividade variável é totalmente configurada com a opção de não fornecer um esquema de dados. Em seguida, a transformação de Operação Original é adicionada como referência entre as duas atividades.
Todas as etapas da operação e a própria operação são válidas:
Neste cenário, a transformação original (Transformation) pode ser referenciada sem problemas. A transformação continua a usar esquemas definidos nas atividades da Operação Original.
Ao abrir a transformação, você pode ver de onde vêm os esquemas e abrir cada atividade do Amazon Redshift usando o menu de ações do esquema para selecionar Editar atividade. Usar Atualizar Esquema atualiza o esquema das atividades de Operação Original:
Cenário C: Atividade com um Esquema Definido Adicionado Próximo a uma Transformação Referenciada
No Cenário C, a transformação original (Transformação) é primeiro adicionada a uma nova operação como referência.
Duas novas atividades do Amazon Redshift são então adicionadas à operação em ambos os lados da transformação: Query Employees e Upsert User Data:
Quando você configura o esquema de dados de cada atividade, a transformação adjacente, que anteriormente herdava seus esquemas das atividades na Operação Original, agora herda seus esquemas das atividades diretamente adjacentes à transformação. Isto afeta todos os locais onde a transformação é referenciada e pode fazer com que outras operações se tornem inválidas.
Ao abrir cada atividade para configurá-la, uma caixa de diálogo lista todas as outras operações que fazem referência à transformação e serão afetadas:
Esta caixa de diálogo é informativa, pois clicar em Continuar ainda não atualizará a transformação. Em vez disso, clicar em Continuar retorna à tela de configuração da atividade. Cancelando esta caixa de diálogo usando o Esc
key tem o mesmo resultado que clicar em Continuar. Se você fechar a tela de configuração da atividade sem configurar o esquema de dados, a transformação adjacente não será afetada, pois a atividade permanecerá desconfigurada sem um esquema de dados.
Depois de configurar a atividade com um esquema de dados, as operações listadas serão afetadas.
Aviso
A ação de adicionar as atividades com esquemas definidos em ambos os lados da transformação referenciada afeta todos os locais onde a transformação é referenciada e pode fazer com que outras operações se tornem inválidas.
A referência de transformação recém-adicionada é inválida:
A operação com as atividades que agora fornecem esquemas para a transformação é inválida porque a transformação é inválida. Porém, na transformação, não há indicação de erros de validação da transformação:
Corrigir Erros de Validação
Neste cenário, a transformação é inválida devido a alterações de esquema no lado da atividade (por exemplo, se os campos forem renomeados ou não estiverem mais presentes). Para resolver veja a seção Mapeamentos de Transformação mais adiante nesta página.
Além disso, outras operações que utilizam a transformação podem ter se tornado inválidas. Por exemplo, Operação Original torna-se automaticamente inválida, pois sua transformação foi alterada automaticamente para agora referenciar os esquemas das atividades no Cenário C:
Para corrigir erros com outras operações, abra a transformação em cada operação e clique no link para atualizar o esquema que aparece na mensagem no cabeçalho da transformação (conforme descrito em Cenário A, acima).
Cenário D: Atividade Sem um Esquema Definido Adicionado Próximo a uma Transformação Referenciada
No Cenário D, a transformação original (Transformação) é primeiro adicionada a uma nova operação como referência.
Duas novas atividades de armazenamento temporário são então adicionadas à operação em ambos os lados da transformação: Ler do armazenamento temporário e Gravar no armazenamento temporário:
Ao abrir cada atividade para configurá-la, uma caixa de diálogo implica incorretamente que outras operações serão afetadas pela configuração da atividade:
Na verdade, se você não fornecer um esquema na configuração da atividade, a transformação adjacente não será afetada. A transformação adjacente continuará a herdar seus esquemas das atividades da Operação Original.
Aviso
Se você reconfigurar posteriormente a atividade em outro momento para fornecer um esquema na configuração da atividade, a transformação adjacente e quaisquer outras operações onde ela for referenciada serão afetadas, embora esta caixa de diálogo não apareça novamente.
Após configurar totalmente cada atividade com a opção de não fornecer esquema de dados, todas as etapas da operação e a própria operação são válidas:
Neste cenário, a transformação original (Transformation) pode ser referenciada sem problemas. A transformação continua a usar esquemas definidos nas atividades da Operação Original.
Ao abrir a transformação, você pode ver de onde vêm os esquemas e abrir cada atividade do Amazon Redshift usando o menu de ações do esquema para selecionar Editar atividade. Usar Refresh Schema atualiza o esquema das atividades de Original Operation:
Mapeamentos de Transformação
Independentemente de onde os esquemas de uma transformação são definidos, mapeamentos de transformação são de propriedade da transformação. Se o esquema de destino for alterado de modo que os campos de destino com mapeamentos não estejam mais presentes e, em seguida, esses campos forem adicionados novamente posteriormente, os mapeamentos de transformação reaparecerão.
Os mapeamentos que permanecem em uma transformação após a alteração do esquema de destino resultam em erros de validade da transformação se os campos mapeados não estiverem mais presentes em um esquema.
Isso pode ocorrer quando uma transformação com mapeamentos que antes herdava seus esquemas de atividades adjacentes é posteriormente referenciada em outra operação com diferentes atividades adjacentes fornecendo esquemas, conforme descrito nos cenários de Cenário B e Cenário D acima.
Neste caso, um erro de validação de transformação descreve os campos ausentes, embora nenhum erro de validação seja exibido na própria transformação.
Para resolver, você pode remover todos os mapeamentos inválidos usando a opção de menu de ações do nó raiz de destino Remover todos os mapeamentos inválidos (consulte Nós de destino em Modo de mapeamento).