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á.
Utilizar expressões de regra de transformação para definir o conteúdo da coluna
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.
Tópicos
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ções do sistema (SCN) ou o número de 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 tem suporte somente nos endpoints de origem SQL Server e Oracle (versão 11.2.0.3 e posterior). |
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 o SQL Server, o valor da posição do fluxo é o LSN do endpoint de origem. Para o Oracle, o valor da posição do fluxo é o SCN do 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 de 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 } }
Utilizar perfis do SQLite 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 |
---|---|
|
O perfil |
|
O perfil |
|
O perfil |
|
O perfil |
|
O perfil |
|
O perfil Se |
trim( |
O perfil |
A seguir, é possível encontrar perfis de LOB que podem ser utilizados para criar expressões de regras de transformação.
Perfis de LOB | Descrição |
---|---|
|
O perfil |
|
O perfil |
|
O perfil |
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 |
---|---|
|
O perfil |
|
O perfil |
|
O perfil |
|
O perfil O perfil |
|
O perfil O perfil |
A seguir, é possível encontrar perfis de verificação de NULL que podem ser utilizados para criar expressões de regras de transformação.
Perfis de verificação NULL | Descrição |
---|---|
|
O perfil |
|
O perfil |
|
O perfil O perfil |
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 |
---|---|
|
O perfil |
|
O perfil |
|
O perfil |
|
O perfil |
|
O perfil
|
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 |
---|---|
|
O perfil Para utilizar o perfil |
Utilizar uma expressão CASE
A expressão CASE
do SQLite 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 utiliza o perfil round
do SQLite 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ê utiliza o perfil datetime
de data do SQLite, 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 utiliza o perfil round
do SQLite 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
. O perfil hash_sha256(
do SQLite cria valores com hash no destino para a coluna de origem, x
)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 } }