Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Utilizar expressões de regra de transformação para definir o conteúdo da coluna

Modo de foco
Utilizar expressões de regra de transformação para definir o conteúdo da coluna - AWS Database Migration Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Para definir o conteúdo de colunas novas e existentes, é possível utilizar uma expressão em uma regra de transformação. Por exemplo, utilizando expressões, é possível adicionar uma coluna ou replicar cabeçalhos de tabela de origem para um destino. Também é possível utilizar expressões para sinalizar registros em tabelas de destino como inseridos, atualizados ou excluídos na origem.

Adicionar uma coluna utilizando uma expressão

Para adicionar colunas a tabelas utilizando uma expressão em uma regra de transformação, utilize uma ação de regra add-column e um destino de regra column.

O exemplo a seguir adiciona uma nova coluna à tabela ITEM. Ele define o nome da nova coluna como FULL_NAME, com um tipo de dados de string, com 50 caracteres. A expressão concatena os valores de duas colunas existentes, FIRST_NAME e LAST_NAME, para avaliar para FULL_NAME. Os parâmetros schema-name e table-name e de expressão se referem aos objetos na tabela do banco de dados de origem. Value e o bloco data-type se referem aos objetos na tabela do banco de dados de destino.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "Test", "table-name": "ITEM" }, "value": "FULL_NAME", "expression": "$FIRST_NAME||'_'||$LAST_NAME", "data-type": { "type": "string", "length": 50 } } ] }

Sinalizar registros de destino utilizando uma expressão

Para sinalizar registros em tabelas de destino como inseridos, atualizados ou excluídos na tabela de origem, utilize uma expressão em uma regra de transformação. A expressão utiliza um perfil operation_indicator para sinalizar registros. Os registros excluídos da origem não são excluídos do destino. Em vez disso, o registro de destino é sinalizado com um valor fornecido pelo usuário para indicar que ele foi excluído da origem.

nota

O perfil operation_indicator funciona somente em tabelas que têm uma chave primária no banco de dados de origem e de destino.

Por exemplo, a regra de transformação a seguir primeiro adiciona uma nova coluna Operation à uma tabela de destino. Ela atualiza a coluna com o valor D sempre que um registro for excluído de uma tabela de origem.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "Operation", "expression": "operation_indicator('D', 'U', 'I')", "data-type": { "type": "string", "length": 50 } }

Replicar cabeçalhos de tabela de origem utilizando expressões

Por padrão, os cabeçalhos das tabelas de origem não são replicados no destino. Para indicar quais cabeçalhos a serem replicados, utilize uma regra de transformação com uma expressão que inclua o cabeçalho da coluna da tabela.

É possível utilizar os cabeçalhos de coluna a seguir em expressões.

Cabeçalho Valor na replicação contínua Valor na carga completa Tipo de dados
AR_H_ _ STREAM POSITION O valor da posição do streaming da origem. Esse valor pode ser o número de alteração do sistema (SCN) ou o número da sequência de log (LSN), dependendo do endpoint de origem. Uma string vazia. STRING
AR_H_ TIMESTAMP Um time stamp indicando a hora da alteração. Um timestamp indicando a hora atual em que os dados chegam ao destino. DATETIME(escala = 7)
AR_H_ _ COMMIT TIMESTAMP Um time stamp indicando a hora da confirmação. Um time stamp indicando a hora atual. DATETIME(escala = 7)
AR_H_ OPERATION INSERT, UPDATE ou DELETE INSERT STRING
AR_H_ USER O nome de usuário, ID ou qualquer outra informação fornecida pela origem sobre o usuário que fez a alteração.

Esse cabeçalho é suportado somente nos endpoints de origem do SQL Server e do Oracle (versão 11.2.0.3 e superior).

A transformação que você deseja aplicar ao objeto. As ações de regra de transformação diferenciam maiúsculas e minúsculas. STRING
AR_H_ _ CHANGE SEQ Um número de incremento exclusivo do banco de dados de origem que consiste em um timestamp e em um número de incremento automático. O valor depende do sistema do banco de dados de origem. Uma string vazia. STRING

O exemplo a seguir adiciona uma nova coluna ao destino utilizando o valor da posição do fluxo da origem. Para SQL Server, o valor da posição do stream é o do LSN endpoint de origem. Para Oracle, o valor da posição do stream é o do SCN endpoint de origem.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_STREAM_POSITION", "data-type": { "type": "string", "length": 50 } }

O exemplo a seguir adiciona uma nova coluna ao destino que tem um número incremental exclusivo da origem. Esse valor representa um número exclusivo de 35 dígitos no nível da tarefa. Os primeiros 16 dígitos fazem parte de um timestamp, e os últimos 19 dígitos são o número record_id incrementado pelo. DBMS

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_CHANGE_SEQ", "data-type": { "type": "string", "length": 50 } }

Usando SQLite funções para criar expressões

Utilize as configurações da tabela para especificar quaisquer configurações que deseja aplicar à tabela ou à visualização selecionada para uma operação especificada. As regras de configuração de tabela são opcionais.

nota

Em vez do conceito de tabelas e visualizações, os bancos de dados MongoDB e DocumentDB armazenam os registros de dados como documentos reunidos em coleções. Portanto, ao migrar de uma origem do MongoDB ou do DocumentDB, considere o tipo de segmentação por intervalo das configurações de carga paralela para coleções selecionadas, em vez de tabelas e visualizações.

A seguir, você encontrará perfis de string que podem ser utilizadas para criar expressões de regras de transformação.

Funções de string Descrição

lower(x)

O perfil lower(x) retorna uma cópia da string x com todos os caracteres convertidos em minúsculas. A lower função embutida padrão funciona somente para ASCII caracteres.

upper(x)

O perfil upper(x) retorna uma cópia da string x com todos os caracteres convertidos em maiúsculas. A upper função embutida padrão funciona somente para ASCII caracteres.

ltrim(x,y)

O perfil ltrim(x,y) retorna uma string formada pela remoção de todos os caracteres que aparecem em y do lado esquerdo de x. Se não houver nenhum valor para y, ltrim(x) removerá os espaços do lado esquerdo de x.

replace(x,y,z)

O perfil replace(x,y,z) retorna uma string formada pela substituição da string z de cada ocorrência da string y na string x.

rtrim(x,y)

O perfil rtrim(x,y) retorna uma string formada pela remoção de todos os caracteres que aparecem em y do lado direito de x. Se não houver nenhum valor para y, rtrim(x) removerá os espaços do lado direito de x.

substr(x,y,z)

O perfil substr(x,y,z) retorna uma substring da string de entrada x que começa com o yº caractere e tem z caracteres.

Se z for omitido, substr(x,y) retornará todos os caracteres até o final da string x começando com o caractere yº. O caractere mais à esquerda de x é o número 1. Se y for negativo, o primeiro caractere da substring será encontrado contando a partir da direita em vez da esquerda. Se z for negativo, os caracteres abs(z) anteriores ao yº caractere serão retornados. Se x for uma string, os índices dos caracteres se referem aos UTF -8 caracteres reais. Se x for aBLOB, então os índices se referem a bytes.

trim(x,y)

O perfil trim(x,y) retorna uma string formada pela remoção de todos os caracteres que aparecem em y do dois lados de x. Se não houver nenhum valor para y, trim(x) removerá os espaços dos dois lados de x.

A seguir, você encontrará LOB funções que podem ser usadas para criar expressões de regras de transformação.

Funções do LOB Descrição

hex(x)

A hex função recebe a BLOB como argumento e retorna uma versão em caracteres hexadecimais em maiúsculas do conteúdo. BLOB

randomblob (N)

A randomblob(N) função retorna um N -byte BLOB que contém bytes pseudoaleatórios. Se N for menor que 1, um byte aleatório de 1 byte BLOB será retornado.

zeroblob(N)

A zeroblob(N) função retorna um BLOB que consiste em N bytes de 0x00.

A seguir, é possível encontrar perfis numéricos que podem ser utilizados para criar expressões de regras de transformação.

Perfis numéricos Descrição

abs(x)

O perfil abs(x) retorna o valor absoluto do argumento numérico x. A abs(x) função retorna NULL se x forNULL. A abs(x) função retornará 0,0 se x for uma string ou BLOB se não puder ser convertida em um valor numérico.

random()

O perfil random retorna um número inteiro pseudoaleatório entre -9.223.372.036.854.775.808 e +9.223.372.036.854.775.807.

round (x,y)

A round (x,y) função retorna um valor de ponto flutuante x arredondado para y dígitos à direita do ponto decimal. Se não houver valor paray, presume-se que seja 0.

max (x,y...)

A max função multiargumento retorna o argumento com o valor máximo ou retorna NULL se algum argumento forNULL.

O perfil max pesquisa seus argumentos da esquerda para a direita em busca de um argumento que defina um perfil de agrupamento. Se um for encontrado, ele utilizará esse perfil de agrupamento para todas as comparações de strings. Se nenhum dos argumentos para max definir um perfil de agrupamento, o perfil de agrupamento BINARY será utilizado. O perfil max é simples quando há dois ou mais argumentos, mas funciona como um perfil agregado se tiver um único argumento.

min (x,y...)

O perfil min de multiargumento retorna o argumento com o valor mínimo.

O perfil min pesquisa seus argumentos da esquerda para a direita em busca de um argumento que defina um perfil de agrupamento. Se um for encontrado, ele utilizará esse perfil de agrupamento para todas as comparações de strings. Se nenhum dos argumentos para min definir um perfil de agrupamento, o perfil de agrupamento BINARY será utilizado. O perfil min é simples quando há dois ou mais argumentos, mas funciona como um perfil agregado se tiver um único argumento.

A seguir, você encontrará funções de NULL verificação que podem ser usadas para criar expressões de regras de transformação.

NULLfunções de verificação Descrição

coalesce (x,y...)

A coalesce função retorna uma cópia de seu primeiro NULL não-argumento, mas retorna NULL se todos os argumentos foremNULL. O perfil de agrupamento tem pelo menos dois argumentos.

ifnull(x,y)

A ifnull função retorna uma cópia de seu primeiro NULL não-argumento, mas retorna NULL se ambos os argumentos foremNULL. O perfil ifnull tem exatamente dois argumentos. O perfil ifnull é igual a coalesce com dois argumentos.

nullif(x,y)

A nullif(x,y) função retornará uma cópia do primeiro argumento se os argumentos forem diferentes, mas retornará NULL se os argumentos forem iguais.

O perfil nullif(x,y) pesquisa seus argumentos da esquerda para a direita em busca de um argumento que defina um perfil de agrupamento. Se um for encontrado, ele utilizará esse perfil de agrupamento para todas as comparações de strings. Se nenhum dos argumentos nullif definir um perfil de agrupamento, o perfil de agrupamento BINARY será utilizado.

A seguir, é possível encontrar perfis de data e hora que podem ser utilizados para criar expressões de regras de transformação.

Perfis de data e hora Descrição

date(timestring, modifier, modifier...)

A date função retorna a data no formato YYYY-MM-DD.

time(timestring, modifier, modifier...)

O perfil time retorna a hora no formato HH:MM:SS.

datetime(timestring, modifier, modifier...)

A datetime função retorna a data e a hora no formato YYYY-MM-DD HH:MM:SS.

julianday(timestring, modifier, modifier...)

O perfil julianday retorna o número de dias desde o meio-dia em Greenwich em 24 de novembro de 4714 a.C.

strftime(format, timestring, modifier, modifier...)

O perfil strftime retorna a data de acordo com a string de formato especificada como o primeiro argumento, utilizando uma das seguintes variáveis:

%d: dia do mês

%H: hora 00 a 24

%f: ** frações de segundos SS. SSS

%j: dia do ano 001 a 366

%J: ** número do dia juliano

%m: mês 1 a 12

%M: minuto 00 a 59

%s: segundos desde 1-1-1970

%S: segundos 00 a 59

%w: dia da semana 0 a 6 domingo==0

%W: semana do ano 00 a 53

%Y: ano 0000 a 9999

%%: %

A seguir, é possível encontrar um perfil de hash que pode ser utilizado para criar expressões de regras de transformação.

Função de hash Descrição

hash_sha256(x)

A hash função gera um valor de hash para uma coluna de entrada (usando o algoritmo SHA -256) e retorna o valor hexadecimal do valor de hash gerado.

Para utilizar o perfil hash em uma expressão, adicione hash_sha256(x) à expressão e substitua x pelo nome da coluna de origem.

Usando uma CASE expressão

A SQLite CASE expressão avalia uma lista de condições e retorna uma expressão com base no resultado. A sintaxe é mostrada a seguir.

CASE case_expression WHEN when_expression_1 THEN result_1 WHEN when_expression_2 THEN result_2 ... [ ELSE result_else ] END # Or CASE WHEN case_expression THEN result_1 WHEN case_expression THEN result_2 ... [ ELSE result_else ] END

Exemplos

exemplo de adição de uma nova coluna de string à tabela de destino utilizando uma condição de caso

O seguinte exemplo de regra de transformação adiciona uma nova coluna string, emp_seniority, à tabela de destino, employee. Ele usa a SQLite round função na coluna de salário, com uma condição de caso para verificar se o salário é igual ou superior a 20.000. Se isso acontecer, a coluna obterá o valor SENIOR e qualquer outra coisa terá o valor JUNIOR.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "emp_seniority", "expression": " CASE WHEN round($emp_salary)>=20000 THEN ‘SENIOR’ ELSE ‘JUNIOR’ END", "data-type": { "type": "string", "length": 50 } }
exemplo da adição de uma nova coluna de data à tabela de destino

O exemplo a seguir adiciona uma nova coluna de data, createdate, à tabela de destino, employee. Quando você usa a função de SQLite datadatetime, a data é adicionada à tabela recém-criada para cada linha inserida.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "createdate", "expression": "datetime ()", "data-type": { "type": "datetime", "precision": 6 } }
exemplo da adição de uma nova coluna numérica à tabela de destino

O exemplo a seguir adiciona uma nova coluna numérica, rounded_emp_salary, à tabela de destino, employee. Ele usa a SQLite round função para adicionar o salário arredondado.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "rounded_emp_salary", "expression": "round($emp_salary)", "data-type": { "type": "int8" } }
exemplo da adição de uma nova coluna string à tabela de destino utilizando o perfil hash

O exemplo a seguir adiciona uma nova coluna string, hashed_emp_number, à tabela de destino, employee. A SQLite hash_sha256(x) função cria valores com hash no destino para a coluna de origem,emp_number.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "hashed_emp_number", "expression": "hash_sha256($emp_number)", "data-type": { "type": "string", "length": 64 } }

Adicionar metadados a uma tabela de destino utilizando expressões

É possível adicionar informações de metadados à tabela de destino utilizando as seguintes expressões:

  • $AR_M_SOURCE_SCHEMA: o nome do esquema de origem.

  • $AR_M_SOURCE_TABLE_NAME: o nome da tabela de origem.

  • $AR_M_SOURCE_COLUMN_NAME: o nome de uma coluna na tabela de origem.

  • $AR_M_SOURCE_COLUMN_DATATYPE: o tipo de dados de uma coluna na tabela de origem.

exemplo da adição de uma coluna para um nome de esquema utilizando o nome do esquema da origem

O exemplo a seguir adiciona uma nova coluna schema_name ao destino utilizando o nome do esquema da origem.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value":"schema_name", "expression": "$AR_M_SOURCE_SCHEMA", "data-type": { "type": "string", "length": 50 } }
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.