Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Uso de expresiones de regla de transformación para definir el contenido de columnas

Modo de enfoque
Uso de expresiones de regla de transformación para definir el contenido de columnas - AWS Database Migration Service

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.

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.

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

lower(x)

La función lower(x) devuelve una copia de la cadena x con todos los caracteres convertidos a minúsculas. La lower función integrada por defecto solo funciona con ASCII los caracteres.

upper(x)

La función upper(x) devuelve una copia de la cadena x con todos los caracteres convertidos a mayúsculas. La upper función integrada predeterminada solo funciona con los ASCII caracteres.

ltrim(x,y)

La función ltrim(x,y) devuelve una cadena formada al eliminar todos los caracteres que aparecen en y desde el lado izquierdo de x. Si no hay ningún valor para y, ltrim(x) elimina los espacios del lado izquierdo de x.

replace(x,y,z)

La función replace(x,y,z) devuelve una cadena formada al sustituir la cadena z por cada aparición de la cadena y en la cadena x.

rtrim(x,y)

La función rtrim(x,y) devuelve una cadena formada al eliminar todos los caracteres que aparecen en y desde el lado derecho de x. Si no hay ningún valor para y, rtrim(x) elimina los espacios del lado derecho de x.

substr(x,y,z)

La función substr(x,y,z) devuelve una subcadena de la cadena de entrada x que comienza con el carácter y y que tiene una longitud de z caracteres.

Si z se omite, substr(x,y) devuelve todos los caracteres hasta el final de la cadena que x comienza por el carácter y. El carácter situado más a la izquierda de x es el número 1. Si y es negativo, el primer carácter de la subcadena se encuentra contando desde la derecha y no desde la izquierda. Si z es negativo, se devuelven los caracteres abs(z) que preceden al carácter y. Si x es una cadena, los índices de los caracteres se refieren a UTF -8 caracteres reales. Si x es aBLOB, los índices se refieren a bytes.

trim(x,y)

La función trim(x,y) devuelve una cadena formada al eliminar todos los caracteres que aparecen en y desde ambos lados de x. Si no hay ningún valor para y, trim(x) elimina los espacios desde ambos lados de x.

A continuación, encontrará LOB funciones que puede utilizar para crear expresiones de reglas de transformación.

Funciones de LOB Descripción

hex(x)

La hex función recibe un BLOB como argumento y devuelve una versión del BLOB contenido en forma de cadena hexadecimal en mayúscula.

randomblob (N)

La randomblob(N) función devuelve un N byte BLOB que contiene bytes pseudoaleatorios. Si N es menor que 1, se devuelve un byte aleatorio. BLOB

zeroblob(N)

La zeroblob(N) función devuelve un BLOB compuesto por N bytes de 0x00.

A continuación, puede encontrar funciones numéricas que puede utilizar para crear expresiones de reglas de transformación.

Funciones numéricas Descripción

abs(x)

La función abs(x) devuelve el valor absoluto del argumento numérico x. La abs(x) función devuelve NULL si esx. NULL La abs(x) función devuelve 0.0 si x es una cadena o si no BLOB se puede convertir en un valor numérico.

random()

La función random devuelve un entero pseudoaleatorio comprendido entre -9,223,372,036,854,775,808 y +9,223,372,036,854,775,807.

round (x,y)

La round (x,y) función devuelve un valor de punto flotante x redondeado a y dígitos a la derecha de la coma decimal. Si no hay ningún valor paray, se supone que es 0.

max (x,y...)

La max función multiargumento devuelve el argumento con el valor máximo o devuelve NULL si hay NULL algún argumento.

La función max busca en sus argumentos de izquierda a derecha un argumento que defina una función de clasificación. Si encuentra uno, utiliza esa función de clasificación para todas las comparaciones de cadenas. Si ninguno de los argumentos en max define una función de clasificación, se utiliza la función de clasificación BINARY. La función max es simple cuando tiene dos o más argumentos, pero funciona como una función agregada si tiene un solo argumento.

min (x,y...)

La función min multiargumento devuelve el argumento con el valor mínimo.

La función min busca en sus argumentos de izquierda a derecha un argumento que defina una función de clasificación. Si encuentra uno, utiliza esa función de clasificación para todas las comparaciones de cadenas. Si ninguno de los argumentos en min define una función de clasificación, se utiliza la función de clasificación BINARY. La función min es simple cuando tiene dos o más argumentos, pero funciona como una función agregada si tiene un solo argumento.

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

coalesce (x,y...)

La coalesce función devuelve una copia de su primer argumento que no sea un NULL argumento, pero lo hace NULL si todos los argumentos lo sonNULL. La función de unión tiene al menos dos argumentos.

ifnull(x,y)

La ifnull función devuelve una copia de su primer argumento que no sea un NULL argumento, pero lo hace NULL si ambos argumentos lo sonNULL. La función ifnull tiene exactamente dos argumentos. La función ifnull es la misma que coalesce con dos argumentos.

nullif(x,y)

La nullif(x,y) función devuelve una copia de su primer argumento si los argumentos son diferentes, pero devuelve NULL si los argumentos son iguales.

La función nullif(x,y) busca en sus argumentos de izquierda a derecha un argumento que defina una función de clasificación. Si encuentra uno, utiliza esa función de clasificación para todas las comparaciones de cadenas. Si ninguno de los argumentos en nullif define una función de clasificación, se utiliza la función de clasificación BINARY.

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

date(timestring, modifier, modifier...)

La date función devuelve la fecha en el formato YYYY-MM-DD.

time(timestring, modifier, modifier...)

La función time devuelve la hora en el formato HH:MM:SS.

datetime(timestring, modifier, modifier...)

La datetime función devuelve la fecha y la hora en el formato YYYY-MM-DD HH:MM:SS.

julianday(timestring, modifier, modifier...)

La función julianday devuelve el número de días transcurridos desde el mediodía en Greenwich el 24 de noviembre de 4714 a. C.

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

La función strftime devuelve la fecha según la cadena de formato especificada como primer argumento y utiliza una de las siguientes variables:

%d: día del mes

%H: hora 00-24

%f: ** fracciones de segundo SS. SSS

%j: día del año de 001 a 366

%J: ** número de día juliano

%m: mes 01-12

%M: minuto 00-59

%s: segundos desde 1970-01-01

%S: segundos 00-59

%w: día de la semana 0–6 domingo==0

%W: semana del año 00-53

%Y: año 0000-9999

%%: %

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

hash_sha256(x)

La hash función genera un valor hash para una columna de entrada (mediante el algoritmo SHA -256) y devuelve el valor hexadecimal del valor hash generado.

Para usar la función hash en una expresión, agregue hash_sha256(x) a la expresión y sustituya x por el nombre de la columna de origen.

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(x) función crea valores cifrados en el destino de la columna de origen,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 } }
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.