Verwenden von Quellfiltern - AWS Database Migration Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Quellfiltern

Sie können Quellfilter verwenden, um Anzahl und Art der Datensätze zu beschränken, die von Ihrer Quelle auf Ihr Ziel übertragen werden. So können Sie beispielsweise festlegen, dass nur die am Hauptsitz ansässigen Angestellten in die Zieldatenbank übertragen werden. Filter sind Teil einer Auswahlregel. Sie wenden Filter auf eine Datenspalte an.

Quellfilter müssen diese Einschränkungen befolgen:

  • Eine Auswahlregel kann keine Filter oder einen oder mehrere Filter haben.

  • Jeder Filter kann eine oder mehrere Filterbedingungen haben.

  • Wenn mehr als ein Filter verwendet wird, wird die Liste der Filter kombiniert, als ob die Filter mit einem UND-Operator verbunden wären.

  • Wenn mehr als eine Filterbedingung in einem einzigen Filter verwendet wird, wird die Liste der Filterbedingungen so kombiniert, als ob die Filterbedingungen mit einem ODER-Operator verbunden wären.

  • Filter werden nur angewendet, wenn rule-action = 'include'.

  • Filter erfordern einen Spaltennamen und eine Liste von Filterbedingungen. Filterbedingungen müssen einen Filteroperator enthalten, der je nach Operator einem Wert, zwei Werten oder keinem Wert zugeordnet ist.

  • Bei Spaltennamen, Tabellennamen, Ansichtsnamen und Schemanamen wird zwischen Groß- und Kleinschreibung unterschieden. Oracle und Db2 sollten immer GROSSBUCHSTABEN verwenden.

  • Filter unterstützen nur Tabellen mit exakten Namen. Filter unterstützen keine Platzhalter.

Die folgenden Einschränkungen gelten für die Verwendung von Quellfiltern:

  • Filter berechnen keine Spalten mit right-to-left Sprachen.

  • Wenden Sie keine Filter auf LOB-Spalten an.

  • Wenden Sie Filter nur auf unveränderliche Spalten an, die nach der Erstellung nicht aktualisiert werden. Wenn Quellfilter auf veränderliche Spalten angewendet werden, die nach der Erstellung aktualisiert werden können, kann es zu einem unerwünschten Verhalten kommen.

    Ein Filter zum Ausschließen oder Einschließen bestimmter Zeilen in einer Spalte schließt die angegebenen Zeilen immer aus bzw. ein, selbst wenn die Zeilen später geändert werden. Angenommen, Sie schließen die Zeilen 1 bis 10 in Spalte A aus oder ein und später werden diese Zeilen geändert und werden zu den Zeilen 11 bis 20. In diesem Fall werden sie weiterhin aus- bzw. eingeschlossen, auch wenn die Daten nicht mehr identisch sind.

    Angenommen, eine Zeile außerhalb des Filters wird später aktualisiert (oder aktualisiert und gelöscht) und sollte dann wie vom Filter definiert aus- oder eingeschlossen werden. In diesem Fall erfolgt die Replikation am Ziel.

Bei der Verwendung von Quellfiltern gelten die folgenden zusätzlichen Bedenken:

  • Es wird empfohlen, einen Index mithilfe der in der Filterdefinition enthaltenen Spalten und des Primärschlüssels zu erstellen.

Erstellen von Quellfilterregeln in JSON

Sie können Quellfilter erstellen, indem Sie den JSON-Parameter filters einer Auswahlregel verwenden. Der filters-Parameter gibt ein Array von einem oder mehreren JSON-Objekten an. Jedes Objekt verfügt über Parameter, die den Quell-Filtertyp, Spaltennamen und die Filterbedingungen festlegen. Diese Filterbedingungen umfassen einen oder mehrere Filteroperatoren und Filterwerte.

Die folgende Tabelle zeigt die Parameter, die Quellfilterung in einem filters-Objekt festlegen.

Parameter

Wert

filter-type

source

column-name

Ein Parameter mit dem Namen der Quellspalte, auf die der Filter angewendet werden soll. Der Name berücksichtigt Groß- und Kleinschreibung.

filter-conditions

Ein Array von einem oder mehreren Objekten, die einen Parameter filter-operator und null oder mehr zugehörige Wertparameter enthalten, je nach Wert für filter-operator.

filter-operator

Ein Parameter mit einem der folgenden Werte:

  • lte – kleiner oder gleich einem Wert

  • ste – kleiner oder gleich einem Wert (lte-Alias)

  • gte – größer oder gleich einem Wert

  • eq – gleich einem Wert

  • noteq – nicht gleich einem Wert

  • between – gleich oder zwischen zwei Werten

  • notbetween – nicht gleich oder zwischen zwei Werten

  • nullNULL-Werte

  • notnull – keine NULL-Werte

value oder

start-value und end-value oder

keine Werte

Null oder mehr Wertparameter, die mit filter-operator verknüpft sind:

  • Falls für filter-operator die Option lte, ste, gte, eq oder noteq festgelegt ist, verwenden Sie value, um einen Wertparameter anzugeben.

  • Falls für filter-operator die Option between oder notbetween festgelegt ist, verwenden Sie start-value und end-value, um zwei Wertparameter anzugeben.

  • Falls für filter-operator die Option null oder notnull festgelegt ist, geben Sie keine Wertparameter an.

Die folgenden Beispiele zeigen einige gängige Möglichkeiten zur Nutzung von Quellfiltern.

Beispiel Einzelner Filter

Der folgende Filter repliziert alle Angestellten mit dem Wert empid >= 100 in die Zieldatenbank.

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

Die folgenden Filter wenden mehrere Filteroperatoren auf eine einzelne Datenspalte an. Der folgende Filter repliziert alle Angestellten mit dem Wert (empid <= 10) ODER (empid is between 50 and 75) ODER (empid >= 100) in die Zieldatenbank.

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

Die folgenden Filter wenden mehrere Filter auf zwei Spalten in einer Tabelle an. Der Filter repliziert alle Angestellten mit dem Wert (empid <= 100) UND (dept = tech) in die Zieldatenbank.

{ "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" }] }] }] }
Beispiel Filtern von NULL-Werten

Der folgende Filter zeigt, wie nach leeren Werten gefiltert wird. Er repliziert alle Angestellten mit dem Wert dept = NULL in die Zieldatenbank.

{ "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" }] }] }] }
Beispiel Filtern unter Verwendung von NOT-Operatoren

Einige der Operatoren können in negativer Form verwendet werden. Der folgende Filter repliziert alle Angestellten mit dem Wert (empid is < 50) OR (empid is > 75) in die Zieldatenbank.

{ "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" }] }] }] }
Beispiel Verwenden von kombinierten Filteroperatoren

Ab AWS DMS Version 3.5.0 können Sie inklusive Operatoren und negative Operatoren mischen.

Der folgende Filter repliziert alle Angestellten mit dem Wert (empid != 50) AND (dept is not NULL) in die Zieldatenbank.

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

Beachten Sie bei Verwendung von null mit anderen Filteroperatoren Folgendes:

  • Wenn Sie inklusive und negative Filterbedingungen sowie null-Filterbedingungen gemeinsam innerhalb desselben Filters verwenden, werden Datensätze mit NULL-Werten nicht repliziert.

  • Wenn Sie negative Filterbedingungen und null-Filterbedingungen ohne inklusive Filterbedingungen innerhalb desselben Filters verwenden, werden keine Daten repliziert.

  • Bei Verwendung negativer Filterbedingungen ohne explizite Festlegung einer null-Filterbedingung werden Datensätze mit NULL-Werten nicht repliziert.

Filtern nach Zeit und Datum

Bei der Auswahl der zu importierenden Daten können Sie ein Datum oder eine Uhrzeit als Teil Ihrer Filterkriterien angeben. AWS DMS verwendet das Datumsformat YYYY-MM-DD und das Uhrzeitformat YYYY-MM-DD HH:MM:SS zum Filtern. AWS DMS Die Vergleichsfunktionen folgen den SQLite-Konventionen. Weitere Informationen zu SQLite-Datentypen und -Datenvergleichen finden Sie unter Datatypes In SQLite Version 3 in der SQLite-Dokumentation.

Der folgende Filter zeigt, wie Sie nach einem Datum filtern. Er repliziert alle Angestellten mit dem Wert empstartdate >= January 1, 2002 in die Zieldatenbank.

Beispiel Filter für einzelnes Datum
{ "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" }] }] }] }