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.
Al usar filtros de origen nos encontramos con los siguientes problemas adicionales:
-
Se recomienda crear un índice con las columnas incluidas en la definición de filtrado y la clave principal.
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 |
---|---|
|
source |
|
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. |
|
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 . |
|
Un parámetro con uno de los siguientes valores:
|
sin valores |
Cero o más parámetros de valor asociados a
|
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 valoresNULL
.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 valoresNULL
.
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
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" }] }] }] }