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 que esté asociado a un valor, a dos valores o a ningún valor, en función del operador.

  • 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 siempre deben usar MAYÚSCULAS.

  • Los filtros solo admiten tablas con nombres exactos. Los filtros no admiten caracteres comodín.

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

  • Los filtros no calculan columnas en los idiomas de derecha a izquierda.

  • 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 a columnas mutables 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-10 en la columna A y que posteriormente se convierten en las filas 11-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

Un parámetro con el nombre de la columna de origen en la que desea el filtro aplicado. El nombre distingue entre mayúsculas y minúsculas.

filter-conditions

Una matriz de uno o más objetos que contiene un parámetro filter-operator y cero o parámetros de valor más asociados, en función del valor de filter-operator.

filter-operator

Un parámetro con uno de los siguientes valores:

  • lte: igual o inferior a un valor

  • ste: igual o inferior a un valor (alias de lte)

  • gte: mayor o igual a un valor

  • eq: igual a un valor

  • noteq: distinto a un valor

  • between: igual que o entre dos valores

  • notbetween: distinto a o entre dos valores

  • null: valore NULL

  • notnull: sin valores NULL

value o

start-value y end-value o

sin valores

Cero o más parámetros de valor asociados a filter-operator:

  • Si filter-operator es lte, ste, gte, eq o noteq, use value para especificar un parámetro de valor.

  • Si filter-operator es between o notbetween, use start-value y end-value para especificar dos parámetros de valor.

  • Si filter-operator es null o notnull, 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": "50" },{ "filter-operator": "noteq", "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

Los siguientes filtros se aplican a varios filtros en 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 Filtrar valores NULL

El siguiente filtro muestra cómo filtrar 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 Uso de operadores de filtros mixtos

A partir de la versión 3.5.0 de AWS DMS, puede mezclar operadores inclusivos y operadores negativos.

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" }] }] }] }

Tenga en cuenta lo siguiente cuando utilice null con otros operadores de filtro:

  • El uso conjunto de condiciones inclusivas, negativas y de filtro null dentro del mismo filtro no replicará los registros con valores NULL.

  • El uso conjunto de condiciones de filtro null y negativas sin condiciones de filtro inclusivo dentro del mismo filtro no replicará los datos.

  • El uso de condiciones de filtro negativas sin una condición de filtro null establecida de forma explícita no replicará los registros con valores NULL.

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.

El siguiente filtro 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" }] }] }] }