Utilizzo di filtri di origine - AWS Servizio di migrazione del Database

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di filtri di origine

Puoi utilizzare i filtri di origine per limitare il numero e il tipo di record trasferiti dall'origine alla destinazione. Ad esempio, puoi specificare che solo i dipendenti con un'ubicazione di sede vengano spostati al database di destinazione. I filtri fanno parte di una regola di selezione. I filtri vengono applicati su una colonna di dati.

I filtri di origine devono seguire questi vincoli:

  • Una regola di selezione può avere uno o più filtri o nessun filtro.

  • Ogni filtro può avere una o più condizioni di filtro.

  • Se viene utilizzato più di un filtro, l'elenco di filtri viene combinato come se venisse utilizzato un operatore AND tra i filtri.

  • Se più di una condizione di filtro viene utilizzata all'interno di un singolo filtro, l'elenco delle condizioni di filtro viene combinato come se venisse utilizzato un operatore OR tra le condizioni di filtro.

  • I filtri vengono applicati solo quando rule-action = 'include'.

  • I filtri richiedono un nome di colonna e un elenco di condizioni di filtro. Le condizioni di filtro devono avere un operatore associato a un valore, due valori o nessun valore, a seconda dell'operatore.

  • I nomi delle colonne, i nomi delle tabelle e i nomi delle viste prevedono una distinzione tra lettere maiuscole e minuscole. Oracle e Db2 devono sempre utilizzare lettere MAIUSCOLE.

  • I filtri supportano solo tabelle con nomi esatti. I filtri non supportano i caratteri jolly.

Le seguenti limitazioni si applicano all'utilizzo dei filtri di origine:

  • I filtri non calcolano le colonne delle right-to-left lingue.

  • Non applicare filtri alle colonne LOB.

  • Applicare filtri solo alle colonne immutabili, che dopo la creazione non vengono aggiornate. Se i filtri di origine vengono applicati alle colonne mutabili, che possono essere aggiornate dopo la creazione, è possibile che si verifichi un comportamento indesiderato.

    Ad esempio, un filtro per escludere o includere righe specifiche in una colonna esclude o include sempre le righe specificate, anche se queste vengono modificate in un secondo momento. Supponi di escludere o includere le righe da 1 a 10 nella colonna A e di modificarle in seguito affinché diventino le righe da 11 a 20. In questo caso, le righe continuano ad essere escluse o incluse anche quando i dati non sono più gli stessi.

    Analogamente, supponiamo che una riga al di fuori dell'ambito del filtro venga successivamente aggiornata (o aggiornata ed eliminata) e che venga esclusa o inclusa in base a quanto definito dal filtro. In tal caso, viene replicata sulla destinazione.

Le seguenti preoccupazioni aggiuntive si applicano all'utilizzo dei filtri di origine:

  • Si consiglia di creare un indice utilizzando le colonne incluse nella definizione del filtro e la chiave primaria.

Creazione di regole di filtro di origine in formato JSON

È possibile creare filtri di origine utilizzando il parametro JSON filters di una regola di selezione. Il parametro filters specifica una matrice di uno o più oggetti JSON. Ogni oggetto dispone di parametri che specificano il tipo di filtro di origine, il nome delle colonne e condizioni di filtro. Queste condizioni di filtro includono uno o più operatori filtro e i relativi valori.

La tabella seguente mostra i parametri utilizzati per specificare il filtro sull'origine in un oggetto filters.

Parametro

Valore

filter-type

source

column-name

Un parametro con il nome della colonna di origine a cui si desidera applicare il filtro. Per il nome è prevista una distinzione tra maiuscole e minuscole.

filter-conditions

Una matrice di uno o più oggetti che contengono un parametro filter-operator e zero o più parametri associati, a seconda del valore filter-operator.

filter-operator

Un parametro con uno dei seguenti valori:

  • lte: minore o uguale a un valore

  • ste: minore o uguale a un valore (alias lte)

  • gte: maggiore o uguale a un valore

  • eq: uguale a un valore

  • noteq: non uguale a un valore

  • between: uguale o compreso tra due valori

  • notbetween: non uguale o compreso tra due valori

  • null: valori NULL

  • notnull: valori non NULL

value o

start-value e end-value o

nessun valore

Zero o più parametri associati a filter-operator:

  • Se filter-operator è lte, ste, gte, eq o noteq, si usa value per specificare un parametro.

  • Se filter-operator è between o notbetween, si usa start-value e end-value per specificare due parametri.

  • Se filter-operator è null o notnull, non si specifica alcun parametro.

I seguenti esempi mostrano alcune delle modalità più comuni per l'utilizzo di filtri sull'origine.

Esempio Filtro singolo

Il filtro seguente replica tutti i dipendenti con empid >= 100 sul database di destinazione.

{ "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" }] }] }] }
Esempio Più operatori di filtro

Il filtro seguente applica più operatori di filtro a una singola colonna di dati. Il filtro replica tutti i dipendenti con (empid <= 10) O (empid is between 50 and 75) O (empid >= 100) sul database di destinazione.

{ "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" }] }] }] }
Esempio Più filtri

I seguenti filtri applicano più filtri a due colonne in una tabella. Il filtro replica tutti i dipendenti con (empid <= 100) E (dept = tech) sul database di destinazione.

{ "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" }] }] }] }
Esempio Filtro dei valori NULL

Il seguente filtro mostra come filtrare i valori vuoti. Replica tutti i dipendenti con dept = NULL sul database di destinazione.

{ "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" }] }] }] }
Esempio Filtro utilizzando gli operatori NOT

Alcuni operatori possono essere utilizzati in forma negativa. Il filtro seguente replica tutti i dipendenti con (empid is < 50) OR (empid is > 75) sul database di destinazione.

{ "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" }] }] }] }
Esempio Utilizzo di operatori di filtro misti

A partire dalla AWS DMS versione 3.5.0, puoi combinare operatori inclusivi e operatori negativi.

Il filtro seguente replica tutti i dipendenti con (empid != 50) AND (dept is not NULL) sul database di destinazione.

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

Tieni presente quanto segue quando utilizzi null con altri operatori di filtro:

  • L'utilizzo combinato di condizioni di filtro inclusive, negative e null all'interno dello stesso filtro non replica i record con valori NULL.

  • L'utilizzo combinato di condizioni di filtro negative e null senza condizioni di filtro inclusive all'interno dello stesso filtro non replica i dati.

  • L'utilizzo di condizioni di filtro negative senza una condizione di filtro null impostata in modo esplicito non replica i record con valori NULL.

Applicazione di filtri in base a ora e data

Quando si selezionano i dati da importare, è possibile specificare una data o un'ora come parte dei criteri di filtro. AWS DMS utilizza il formato della data YYYY-MM-GG e il formato dell'ora YYYY-MM-DD HH:MM:SS per il filtraggio. AWS DMS Le funzioni di confronto seguono le convenzioni SQLite. Per ulteriori informazioni sui tipi di dati SQLite e sui confronti tra date, consulta la sezione relativa ai tipi di dati in SQLite versione 3 nella documentazione di SQLite.

Il seguente filtro mostra come filtrare una data. Replica tutti i dipendenti con empstartdate >= January 1, 2002 sul database di destinazione.

Esempio Filtro per data singola
{ "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" }] }] }] }