As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar filtros de origem
É possível usar filtros de origem para limitar o número e o tipo de registros transferidos da origem ao destino. Por exemplo, você pode especificar que somente os funcionários localizados na sede serão movidos para o banco de dados de destino. Os filtros fazem parte de uma regra de seleção. Os filtros são aplicados a uma coluna de dados.
Os filtros de origem devem seguir estas restrições:
-
Uma regra de seleção pode não ter filtros ou ter um ou mais filtros.
-
Cada filtro pode ter uma ou mais condições de filtro.
-
Se for utilizado mais de um filtro, a lista de filtros será combinada como se utilizasse um operador AND entre eles.
-
Se for usada mais de uma condição de filtro em um único filtro, a lista de condições de filtro será combinada como se usasse um operador OR entre elas.
-
Os filtros só são aplicados quando
rule-action = 'include'
. -
Os filtros exigem um nome de coluna e uma lista de condições de filtro. As condições do filtro devem ter um operador de filtro associado a um valor, dois valores ou nenhum valor, dependendo do operador.
-
Os nomes de colunas, tabelas, exibições e de esquema diferenciam maiúsculas e minúsculas. O Oracle e o Db2 devem sempre utilizar letras maiúsculas.
-
Os filtros só são compatíveis com tabelas com nomes exatos. Os filtros não são compatíveis com curingas.
As seguintes limitações se aplicam ao uso de filtros de origem:
-
Os filtros não calculam colunas de right-to-left idiomas.
-
Não aplique filtros a colunas de LOB.
-
Aplique filtros somente a colunas imutáveis, que não são atualizadas após a criação. Se os filtros de origem forem aplicados a colunas mutáveis, que podem ser atualizadas após a criação, o resultado pode ser um comportamento adverso.
Por exemplo, um filtro para excluir ou incluir linhas específicas em uma coluna sempre excluirá ou incluirá as linhas especificadas, mesmo que as linhas sejam alteradas posteriormente. Vamos supor que você exclua ou inclua as linhas 1 a 10 na coluna A, e elas sejam posteriormente alteradas de modo a tornarem-se as linhas 11 a 20. Neste caso, elas continuarão a ser excluídas ou incluídas ainda que os dados não sejam mais os mesmos.
Da mesma forma, vamos supor que uma linha fora do escopo do filtro seja atualizada posteriormente (ou atualizada e excluída) e deva ser excluída ou incluída conforme definido pelo filtro. Neste caso, ela será replicada no destino.
As seguintes preocupações adicionais se aplicam ao usar filtros de origem:
-
Recomendamos que você crie um índice usando as colunas incluídas na definição de filtragem e a chave primária.
Criar regras de filtro de origem em JSON
É possível criar filtros de origem utilizando o parâmetro filters
do JSON de uma regra de seleção. O parâmetro filters
especifica uma matriz de um ou mais objetos JSON. Cada objeto tem parâmetros que especificam o tipo do filtro de origem, o nome da coluna e as condições de filtragem. Essas condições de filtro incluem um ou mais operadores de filtro e valores de filtro.
A tabela a seguir mostra os parâmetros utilizados para especificar a filtragem de origem em um objeto filters
.
Parâmetro |
Valor |
---|---|
|
source |
|
Um parâmetro com o nome da coluna de origem à qual você deseja aplicar o filtro. O nome diferencia maiúsculas e minúsculas. |
|
Uma matriz de um ou mais objetos que contém um parâmetro filter-operator e zero ou mais parâmetros de valor associado, dependendo do valor de filter-operator . |
|
Um parâmetro com um dos seguintes valores:
|
sem valores |
Zero ou mais parâmetros de valor associado a
|
Os exemplos a seguir mostram algumas maneiras comuns de utilizar filtros de origem.
exemplo Filtro único
O seguinte filtro replica todos os funcionários em que empid >=
100
para o banco de dados 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" }] }] }] }
exemplo Vários operadores de filtro
O seguinte filtro aplica vários operadores de filtro a uma única coluna de dados. O filtro replica todos os funcionários em que (empid <=
10)
OU (empid is between 50 and 75)
OU (empid
>= 100)
para o banco de dados 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" }] }] }] }
exemplo Vários filtros
O filtro a seguir aplica vários filtros a duas colunas em uma tabela. O filtro replica todos os funcionários em que (empid <= 100)
AND (dept = tech)
para o banco de dados 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" }] }] }] }
exemplo Filtrar valores NULL
O filtro a seguir mostra como filtrar valores vazios. Ele replica todos os funcionários em que dept = NULL
para o banco de dados 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" }] }] }] }
exemplo Filtrar utilizando operadores NOT
Alguns dos operadores podem ser utilizados na forma negativa. O seguinte filtro replica todos os funcionários em que (empid is < 50) OR (empid
is > 75)
para o banco de dados 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" }] }] }] }
exemplo Utilizar operadores de filtros mistos
A partir da AWS DMS versão 3.5.0, você pode misturar operadores inclusivos e operadores negativos.
O seguinte filtro replica todos os funcionários em que (empid != 50) AND (dept is not
NULL)
para o banco de dados 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" }] }] }] }
Observe o seguinte ao utilizar null
com outros operadores de filtro:
Utilizar condições de filtro inclusivas, negativas e
null
no mesmo filtro não replicará registros com valoresNULL
.Utilizar condições de filtro negativas e
null
em conjunto sem condições de filtro inclusivas no mesmo filtro não replicará nenhum dado.Utilizar condições de filtro negativas sem uma condição de filtro
null
definida explicitamente não replicará registros com valoresNULL
.
Filtragem por hora e data
Ao selecionar dados a serem importados, você pode especificar uma data ou hora como parte dos seus critérios de filtro. AWS DMS usa o formato de data YYYY-MM-DD e o formato de hora YYYY-MM-DD HH:MM:SS para filtragem. As funções AWS DMS de comparação seguem as convenções do SQLite. Para obter mais informações sobre comparações de datas e tipos de dados SQLite, consulte Datatypes In SQLite Version 3
O exemplo a seguir mostra como filtrar por uma data. Ele replica todos os funcionários em que empstartdate >= January 1, 2002
para o banco de dados de destino.
exemplo Filtro de data única
{ "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" }] }] }] }