ソースフィルタの使用 - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ソースフィルタの使用

ソースフィルタを使用すると、ソースからターゲットに転送されるレコードの数とタイプを制限できます。たとえば、本社を拠点とする従業員だけがターゲットデータベースに移行されるように指定できます。フィルタは、選択ルールの一部です。データの列にフィルタを適用します。

ソースフィルタは、以下の制約に従う必要があります。

  • 選択ルールには、フィルタを設定しないことも、1 つ以上のフィルタを選択することもできます。

  • すべてのフィルタには 1 つ以上のフィルタ条件を設定できます。

  • 複数のフィルタを使用する場合、フィルタのリストはフィルタ間で AND 演算子を使用しているものとして結合されます。

  • 1 つのフィルタ内で複数のフィルタ条件を使用する場合、フィルタ条件のリストはフィルタ条件間で OR 演算子を使用しているものとして結合されます。

  • フィルタは rule-action = 'include' の場合のみ適用されます。

  • フィルタには、列名とフィルタ条件のリストが必要です。フィルタ条件には、演算子に応じて、1 つの値、2 つの値、または値なしで関連付けられるフィルタ演算子が必要です。

  • 次のような負の演算子を指定すると、1 つのフィルター内で複数のフィルター条件を指定することはできません。noteq(等しくない)、notbetween(2 つの値に等しい、またはその間)notnull(いいえNULLvalues).

  • 列名、テーブル名、ビュー名およびスキーマ名では大文字と小文字が区別されます。

ソースフィルタの使用には、次の制限が適用されます。

  • フィルタは、右から左に読む言語の列を計算しません。

  • LOB 列にはフィルタを適用しないでください。

  • フィルタは、作成後に更新されないイミュータブルの列にのみ適用します。ソースフィルタがに適用されている場合Mutable列は、作成後に更新され、不利な動作が発生する可能性があります。

    例えば、列内の特定の行を除外または含めるフィルターでは、後で行が変更された場合でも、指定された行が常に除外または含められます。列 A で行 1~10 を除外または含めることがあり、後でそれらの行が行 11~20 に変更されたとします。この場合、データが同じでなくなった場合でも、これらのデータは除外または含まれ続けます。

    同様に、フィルタの範囲外の行が後で更新され (または更新後に削除され)、フィルタの定義に従って除外または含める必要があるとします。このような場合は、ターゲットでレプリケートされます。

JSON 形式のソースフィルタルールの作成

選択ルールで JSON filters パラメータを使用してソースフィルタを作成できます。filters パラメータは、1 つ以上の JSON オブジェクトの配列を指定します。各オブジェクトには、ソースフィルタのタイプ、列の名前、フィルタ条件を指定するパラメータがあります。これらのフィルタ条件には、1 つ以上のフィルタ演算子およびフィルタ値が含まれています。

次の表は、filters オブジェクトでソースフィルタリングを指定するパラメータを示しています。

パラメータ

filter-type

source

column-name

フィルタを適用するソース列の名前を持つパラメータ。名前は、大文字と小文字が区別されます。

filter-conditions

を含む 1 つ以上のオブジェクトの配列filter-operatorパラメータおよび 0 個以上の関連する値パラメータ。filter-operator値.

filter-operator

次のいずれかの値を持つパラメータ:

  • lte— 1 つの値以下

  • ste— 1 以下 (lteエイリアス)

  • gte— 1 つ以上の値

  • eq— 1 つの値に等しい

  • noteq— 1 つの値に等しくない

  • between— 2 つの値に等しい、またはその間

  • notbetween— 2 つの値に等しい、またはその間

  • nullNULL

  • notnull— いいえNULL

value または

start-valueおよびend-valueまたは

値なし

関連付けられた 0 個以上の値パラメータfilter-operator:

  • もしfilter-operatorlte,ste,gte,eq, またはnoteqを使用するにはvalueをクリックして、1 つの値パラメータを指定します。

  • もしfilter-operatorbetweenまたはnotbetweenを使用するにはstart-valueおよびend-valueをクリックして、2 つの値パラメータを指定します。

  • もしfilter-operatornullまたはnotnullで、値パラメータを指定しません。

以下の例では、ソースフィルタを使用する一般的な方法をいくつか示します。

例 1 つのフィルタ

次のフィルタは、empid >= 100 のすべての従業員をターゲットデータベースにレプリケートします。

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

例 複数のフィルタ演算子

以下のフィルタは、複数のフィルタ演算子を 1 つのデータ列に適用します。このフィルタは、(empid <= 10) または (empid is between 50 and 75) または (empid >= 100) のすべての従業員をターゲットデータベースにレプリケートします。

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

例 複数のフィルタ

以下のフィルタは、テーブル内の 2 つの列に複数のフィルタを適用します。このフィルタは、(empid <= 100) および (dept = tech) のすべての従業員をターゲットデータベースにレプリケートします。

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

例 NULL 値のフィルタリング

次のフィルタは、空の値でフィルタリングする方法を示しています。これは、dept = NULL のすべての従業員をターゲットデータベースにレプリケートします。

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

例 NOT 演算子を使用したフィルタリング

一部の演算子は、負の形式で使用できます。次のフィルタは、(empid is < 50) OR (empid is > 75) のすべての従業員をターゲットデータベースにレプリケートします。

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

例 NOT 演算子を使用する複数のフィルター

1 つのフィルタ (OR 演算) では、負のフィルタ条件を 1 つだけ使用できます。ただし、複数のフィルタを使用できます (ANDオペレーション) に負のフィルタ条件を指定します。次のフィルタは、(empid != 50) AND (dept is not NULL) のすべての従業員をターゲットデータベースにレプリケートします。

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

時刻と日付でフィルタリング

インポートするデータを選択すると、フィルタ条件の一部として日付または期間を指定できます。AWS DMS は、フィルタリングに日付形式 YYYY-MM-DD と時刻形式 YYYY-MM-DD HH:MM:SS を使用します。AWS DMS 比較関数は SQLite のルールに従います。SQLite のデータ型と日付変換については、SQLite ドキュメントの「SQLite バージョン 3 のデータ型」を参照してください。

次のフィルタは、日付をフィルタリングする方法を示しています。これは、empstartdate >= January 1, 2002 のすべての従業員をターゲットデータベースにレプリケートします。

例 1 つの日付フィルタ

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