Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Para definir contenido para columnas nuevas y existentes, puede utilizar una expresión dentro de una regla de transformación. Por ejemplo, mediante expresiones puede agregar una columna o replicar encabezados de tabla de origen a un destino. También puede utilizar expresiones para marcar registros en tablas de destino como insertados, actualizados o eliminados en el origen.
Temas
Agregar una columna mediante una expresión
Para agregar columnas a tablas mediante una expresión en una regla de transformación, utilice una acción de regla add-column
y un destino de regla column
.
En el ejemplo siguiente se agrega una nueva columna a la tabla ITEM
. Establece el nuevo nombre de columna en FULL_NAME
, con un tipo de datos de string
, 50 caracteres de longitud. La expresión concatena los valores de dos columnas existentes, FIRST_NAME
y LAST_NAME
, para evaluar FULL_NAME
. Los parámetros schema-name
, table-name
y de expresión hacen referencia a los objetos de la tabla de la base de datos de origen. Value
y el bloque data-type
hacen referencia a los objetos en la tabla de la base de datos 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
}
}
]
}
Marcar registros de destino mediante una expresión
Para marcar los registros de las tablas de destino como insertados, actualizados o eliminados en la tabla de origen, utilice una expresión en una regla de transformación. La expresión utiliza una función operation_indicator
para marcar registros. Los registros eliminados del origen no se eliminan del destino. En su lugar, el registro de destino se marca con un valor proporcionado por el usuario para indicar que se eliminó del origen.
nota
La función operation_indicator
solo funciona en tablas que tienen una clave principal en la base de datos de origen y destino.
Por ejemplo, la siguiente regla de transformación agrega primero una nueva columna Operation
a una tabla de destino. A continuación, actualiza la columna con el valor D
cada vez que se elimina un registro de una tabla de origen.
{
"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
}
}
Replicación de encabezados de tablas de origen mediante expresiones
De forma predeterminada, los encabezados de las tablas de origen no se replican en el destino. Para indicar qué encabezados replicar, utilice una regla de transformación con una expresión que incluya el encabezado de columna de tabla.
Puede utilizar los siguientes encabezados de columna en expresiones.
Encabezado | Valor en la replicación continua | Valor en carga completa | Tipo de datos: |
---|---|---|---|
AR_H_ _ STREAM POSITION | El valor de posición del flujo desde el origen. Este valor puede ser el número de cambio del sistema (SCN) o el número de secuencia de registro (LSN), según el punto final de origen. | Una cadena vacía. | STRING |
AR_H_ TIMESTAMP | Una marca de tiempo que indica la hora del cambio. | Una marca temporal que indica la hora actual en que los datos llegan al destino. | DATETIME(escala = 7) |
COMMITAR_H_ _ TIMESTAMP | Una marca de tiempo que indica la hora de la confirmación. | Una marca de tiempo que indica la hora actual. | DATETIME(escala = 7) |
AR_H_ OPERATION | INSERT, UPDATE o DELETE | INSERT | STRING |
AR_H_ USER | Nombre de usuario, ID o cualquier otra información que el origen proporciona sobre el usuario que realizó el cambio. Este encabezado solo se admite en los puntos finales de origen SQL Server y Oracle (versión 11.2.0.3 y superior). |
La transformación que desea aplicar al objeto. Las acciones de las reglas de transformación distinguen entre mayúsculas y minúsculas. | STRING |
AR_H_ _ CHANGE SEQ | Un número de incremento único de la base de datos de origen que consta de una marca temporal y un número de incremento automático. El valor depende del sistema de base de datos de origen. | Una cadena vacía. | STRING |
En el ejemplo siguiente se agrega una nueva columna al destino mediante el valor de posición de flujo del origen. En el SQL caso del servidor, el valor de la posición del flujo es el del punto final LSN de origen. Para Oracle, el valor de posición del flujo es el del SCN punto final de origen.
{
"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
}
}
El siguiente ejemplo agrega una nueva columna al destino que tiene un número creciente único del origen. Este valor representa un número único de 35 dígitos en el nivel de tarea. Los primeros 16 dígitos forman parte de una marca de tiempo y los últimos 19 dígitos son el número record_id incrementado por el. 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
}
}
SQLiteUso de funciones para crear expresiones
Puede utilizar table-settings para especificar cualquier configuración que desee aplicar a la tabla o vista seleccionada para una operación específica. Las reglas de table-settings son opcionales.
nota
En lugar del concepto de tablas y vistas, las bases de datos MongoDB y DocumentDB almacenan los registros de datos como documentos que se agrupan en recopilaciones. Por lo tanto, al migrar desde un origen de MongoDB o DocumentDB, considere el tipo de segmentación por rango de la configuración de carga paralela para recopilaciones seleccionadas en lugar de tablas y vistas.
A continuación, encontrará funciones de cadena que puede utilizar para crear expresiones de reglas de transformación.
Funciones de cadena | Descripción |
---|---|
|
La función |
|
La función |
|
La función |
|
La función |
|
La función |
|
La función Si |
trim( |
La función |
A continuación, encontrará LOB funciones que puede utilizar para crear expresiones de reglas de transformación.
Funciones de LOB | Descripción |
---|---|
|
La |
|
La |
|
La |
A continuación, puede encontrar funciones numéricas que puede utilizar para crear expresiones de reglas de transformación.
Funciones numéricas | Descripción |
---|---|
|
La función |
|
La función |
|
La |
|
La La función |
|
La función La función |
A continuación, encontrará funciones de NULL comprobación que puede utilizar para crear expresiones de reglas de transformación.
NULLfunciones de comprobación | Descripción |
---|---|
|
La |
|
La |
|
La La función |
A continuación, puede encontrar funciones de fecha y hora que puede utilizar para crear expresiones de reglas de transformación.
Funciones de fecha y hora | Descripción |
---|---|
|
La |
|
La función |
|
La |
|
La función |
|
La función
|
A continuación, puede encontrar una función de inserción que puede utilizar para crear expresiones de reglas de transformación.
Función de inserción | Descripción |
---|---|
|
La Para usar la función |
Uso de una expresión CASE
La SQLite CASE
expresión evalúa una lista de condiciones y devuelve una expresión basada en el resultado. La sintaxis se muestra a continuación.
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
Ejemplos
ejemplo de agregar una nueva columna de cadenas a la tabla de destino mediante una condición que distingue entre mayúsculas y minúsculas
La siguiente regla de transformación de ejemplo agrega una nueva columna de cadena, emp_seniority
, a la tabla de destino, employee
. Utiliza la SQLite round
función de la columna de salarios, con una condición de mayúsculas y minúsculas para comprobar si el salario es igual o superior a 20 000. Si es así, la columna obtiene el valor SENIOR
y cualquier otra columna tiene el 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
}
}
ejemplo de agregar una nueva columna de fecha a la tabla de destino
En el ejemplo siguiente se agrega una nueva columna de fecha, createdate
, a la tabla de destino, employee
. Al utilizar la función de SQLite fechadatetime
, la fecha se añade a la tabla recién creada para cada fila insertada.
{
"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
}
}
ejemplo de agregar una nueva columna numérica a la tabla de destino
En el ejemplo siguiente se agrega una nueva columna numérica, rounded_emp_salary
, a la tabla de destino, employee
. Utiliza la SQLite round
función para añadir el salario redondeado.
{
"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"
}
}
ejemplo de agregar una nueva columna de cadenas a la tabla de destino mediante la función de inserción
En el ejemplo siguiente se agrega una nueva columna de cadena, hashed_emp_number
, a la tabla de destino, employee
. La SQLite hash_sha256(
función crea valores cifrados en el destino de la columna de origen,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
}
}
Agregar metadatos a una tabla de destino mediante expresiones
Puede agregar la información de los metadatos a la tabla de destino mediante las siguientes expresiones:
-
$AR_M_SOURCE_SCHEMA
: el nombre del esquema de origen. -
$AR_M_SOURCE_TABLE_NAME
: el nombre de la tabla de origen. -
$AR_M_SOURCE_COLUMN_NAME
: el nombre de una columna de la tabla de origen. -
$AR_M_SOURCE_COLUMN_DATATYPE
: el tipo de datos de una columna en la tabla de origen.
ejemplo de agregar una columna para un nombre de esquema mediante el nombre de esquema del origen
En el ejemplo siguiente se agrega una nueva columna denominada schema_name
al destino mediante el nombre de esquema del origen.
{
"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
}
}