Uso de filtros de origen - 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.

Uso de filtros de origen

Puede utilizar filtros de origen para limitar el número y el tipo de los registros transferidos desde el origen al destino. Por ejemplo, puede especificar que solo los trabajadores con una ubicación de sede central se trasladen a la base de datos de destino. Los filtros forman parte de una regla de selección. Puede aplicar filtros en una columna de datos.

Los filtros de origen presentan las restricciones siguientes:

  • Una regla de selección puede no tener filtros o bien uno o más filtros.

  • Cada filtro puede tener una o varias condiciones de filtro.

  • Si se utiliza más de un filtro, la lista de filtros se combina como si utilizara un operador AND entre los filtros.

  • Si se utiliza más de una condición de filtro en un único filtro, la lista de condiciones del filtro se combina como si se utilizara un operador OR entre las condiciones del filtro.

  • Los filtros solo se aplican cuando rule-action = 'include'.

  • Los filtros requieren un nombre de columna y una lista de condiciones de filtro. Las condiciones de filtro deben tener un operador de filtro asociado a un valor, dos valores o ningún valor, según el operador.

  • No puede especificar más de una condición de filtro dentro de un solo filtro si especifica un operador negativo comonoteq(distinto de),notbetween(igual que o entre dos valores) onotnull(noNULLValores válidos).

  • Los nombres de columna, los nombres de tabla, los nombres de vista y los nombres de esquema distinguen entre mayúsculas y minúsculas. Oracle y Db2 deben usar siempre MAYÚSCULAS.

Las siguientes limitaciones se aplican al uso de filtros de origen:

  • Los filtros no calculan columnas de right-to-left idiomas.

  • No aplique filtros en las columnas LOB.

  • Aplique filtros solo a columnas inmutables que no se actualizan después de la creación. Si se aplican filtros de origen amutable, que se pueden actualizar después de la creación, puede producirse un comportamiento adverso.

    Por ejemplo, un filtro para excluir o incluir filas específicas en una columna siempre excluye o incluye las filas especificadas, aunque estas filas cambien posteriormente. Supongamos que excluye o incluye las filas 1 a 10 en la columna A y que posteriormente se convierten en las filas 11 a 20. En este caso, siguen siendo excluidas o incluidas, incluso aunque los datos ya no sean los mismos.

    Del mismo modo, se supone que una fila fuera del ámbito del filtro se actualiza posteriormente (o se actualiza y elimina) y luego debe excluirse o incluirse según lo definido por el filtro. En este caso, se replica en el objetivo.

Creación de reglas de filtros de origen en JSON

Puede crear filtros de origen mediante el parámetro JSON filters de una regla de selección. El parámetro filters especifica una matriz de uno o varios objetos JSON. Cada objeto tiene parámetros que especifican el tipo de filtro de origen, el nombre de columna y las condiciones de filtro. Estas condiciones de filtro incluyen uno o varios operadores de filtro y valores de filtro.

La tabla siguiente muestra los parámetros para especificar el filtrado de origen en un objeto filters.

Parámetro

Valor

filter-type

source

column-name

Parámetro con el nombre de la columna de origen a la que desea aplicar el filtro. El nombre distingue entre mayúsculas y minúsculas.

filter-conditions

Matriz de uno o varios objetos que contienenfilter-operatorparámetro y cero o más parámetros de valor asociados, según elfilter-operatorValor .

filter-operator

Parámetro con uno de los siguientes valores:

  • lte: menor o igual que

  • ste: menor o igual queltealias)

  • gte: mayor o igual que

  • eq— igual a un valor

  • noteq— no es igual a un valor

  • between: igual que o entre dos valores

  • notbetween: menor o entre dos valores

  • nullNULLValores

  • notnull— noNULLValores

value o

start-valueyend-valueo

sin valores

Parámetros de valor cero o más asociados afilter-operator:

  • Sifilter-operatoreslte,ste,gte,eq, o biennoteq, utilizarvaluepara especificar un parámetro de valor.

  • Sifilter-operatoresbetweenonotbetween, utilizarstart-valueyend-valuepara especificar dos parámetros de valor.

  • Sifilter-operatoresnullonotnull, no especifique ningún parámetro de valor.

Los siguientes ejemplos muestran algunas de las formas más habituales de utilizar filtros de origen.

ejemplo Filtro único

El siguiente filtro replica todos los empleados que empid >= 100 en la base de datos de destino.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "gte", "value": "100" }] }] }] }
ejemplo Operadores de varios filtros

El siguiente filtro se aplica a operadores de múltiples filtros en una única columna de datos. El filtro replica todos los empleados que (empid <= 10) O (empid is between 50 and 75) O (empid >= 100) en la base de datos de destino.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "lte", "value": "10" }, { "filter-operator": "between", "start-value": "50", "end-value": "75" }, { "filter-operator": "gte", "value": "100" }] }] }] }
ejemplo Varios filtros

En los siguientes filtros se aplican varios filtros a dos columnas de una tabla. El filtro replica todos los empleados que (empid <= 100) Y (dept = tech) en la base de datos de destino.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "lte", "value": "100" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "eq", "value": "tech" }] }] }] }
ejemplo Filtrado de valores NULL

En el siguiente filtro, se muestra cómo filtrar según valores vacíos. Replica todos los empleados donde dept = NULL en la base de datos de destino.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "null" }] }] }] }
ejemplo Filtrado mediante operadores NOT

Algunos de los operadores se pueden utilizar en forma negativa. El siguiente filtro replica todos los empleados que (empid is < 50) OR (empid is > 75) en la base de datos de destino.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "notbetween", "start-value": "50", "end-value": "75" }] }] }] }
ejemplo Varios filtros que utilizan operadores NOT

Solo puede utilizar una condición de filtro negativa dentro de un solo filtro (operación OR). Sin embargo, puede utilizar varios filtros (AND) con la condición de filtro negativo. El siguiente filtro replica todos los empleados que (empid != 50) AND (dept is not NULL) en la base de datos de destino.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "noteq", "value": "50" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "notnull" }] }] }] }

Filtrar por fecha y hora

Cuando se seleccionan datos para su importación, puede especificar una fecha u hora como parte de los criterios de filtrado. AWS DMS utiliza la fecha en formato AAAA-MM-DD y la hora en formato AAAA-MM-DD HH: MM: SS para el filtrado. Las funciones de comparación de AWS DMS siguen las convenciones de SQLite. Para obtener más información sobre los tipos de datos y las comparaciones de fechas de SQLite, consulte Datatypes in SQLite version 3 en la documentación de SQLite.

En el siguiente filtro, se muestra cómo filtrar según una fecha. Replica todos los empleados donde empstartdate >= January 1, 2002 en la base de datos de destino.

ejemplo Filtro de una sola fecha
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [{ "filter-operator": "gte", "value": "2002-01-01" }] }] }] }