すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:フィルター条件の設定

最終更新日:Jan 14, 2026

同期タスクまたは移行タスクのタスクオブジェクトを構成する際に、フィルター条件を設定して、ソースデータベースからターゲットデータベースへ特定のデータを同期または移行できます。この機能は、シャーディングやデータの一部のみを移行するなどのシナリオで役立ちます。

前提条件

タスクは オブジェクト設定 ステージにあります。このステージに入る手順については、同期ソリューションの概要 および 移行ソリューションの概要 をご参照ください。

注意事項

  • COLUMN1 IN (SELECT id FROM table1) のような複雑なフィルター文はサポートされていません。

  • ソーステーブルまたはコレクションに、大文字と小文字の違いしかない 2 つの列が含まれている場合、フィルタリングタスクが期待どおりに機能しないことがあります。

  • ソースデータベースが Tair/Redis の場合、キープレフィックスによってのみデータをフィルターできます。

  • ソースデータベースが MongoDB の場合、条件付きフィルタリングは完全同期タスクまたは移行タスクでのみサポートされ、増分タスクではサポートされません。

  • ソースデータベースが Tair/Redis または MongoDB 以外の場合、フィルター条件でクォーテーションマークが必要な場合は、シングルクォーテーションマーク (') を使用します。

  • フィルター条件の末尾にセミコロン (;) を追加しないでください。タスクが失敗する原因となります。

  • ソースデータベースでの UPDATE 操作が特定の条件を満たし、変更前イメージの値はフィルター条件を満たすが、変更後イメージの値は満たさない場合、DTS はデフォルトで UPDATE 文を DELETE 文に変換し、ターゲットデータベースでその DELETE 文を実行します。

    重要

    ソースデータベースが SQL Server の DTS インスタンスの場合、フィルター対象のフィールドがクラスター化インデックス列でない場合、このフィルタリングロジックは適用されません。

操作手順

説明

フィルター条件の設定方法は、Tair/RedisMongoDB、その他のデータベースなど、ソースデータベースの種類ごとに異なります。

個別設定

  1. オブジェクト設定 ステップで、タスクオブジェクトを 選択中のオブジェクト ボックスに移動します。

    説明

    MongoDB ソースデータベースでは、オブジェクトをコレクションの粒度で選択する必要があります。Tair/Redis ソースデータベースでは、オブジェクトを Redis DB の粒度で選択する必要があります。その他のデータベースタイプでは、オブジェクトをテーブルの粒度で選択する必要があります。

  2. ターゲットオブジェクトを右クリックします。

  3. 表示されるダイアログボックスで、フィルター条件を入力します。

    • ソースデータベースが Tair/Redis の場合、スキーマの編集 ダイアログボックスで、同期するプレフィックス (ホワイトリスト) または フィルタリングするプレフィックス (ブラックリスト) に値を入力します。

    • ソースデータベースが MongoDB の場合、テーブルの編集 ダイアログボックスで、フィルタリング条件 に値を入力します。

    • その他のソースデータベースタイプでは、テーブルの編集 ダイアログボックスで、フィルタリング条件 の値を入力します。

    説明

    フィルター条件の構文の詳細については、「ステートメントの例」をご参照ください。

  4. 設定が完了したら、[OK] をクリックします。

  5. プロンプトに従ってタスクの構成を完了します。

条件の一括設定

  1. オブジェクト設定 ステップで、タスクオブジェクトを 選択中のオブジェクト ボックスに移動します。

  2. 選択中のオブジェクト エリアの右上隅で、一括編集 をクリックします。

  3. オブジェクトを選択 ボックスで、プレフィックスフィルター条件で設定するオブジェクトを選択します。

    説明

    タイプを選択 はデフォルト値のままでかまいません。

  4. 編集タイプの選択 エリアで、フィルタリング条件 タブをクリックします。

    説明

    ソースデータベースが Tair/Redis の場合は、同期 / フィルタリングするプレフィックス タブをクリックします。

  5. 編集モードを選択する を選択します。

    • 追加: タスクの既存のフィルター条件に新しいフィルター条件を追加します。

    • 上書き: タスクの既存のフィルター条件を削除し、新しいフィルター条件を適用します。

  6. フィルター条件を設定します。

    • ソースデータベースが Tair/Redis の場合、同期するプレフィックス または フィルタリングするプレフィックス を選択し、対応するプレフィックスを入力できます。

    • ソースデータベースが MongoDB の場合、テキストボックスにフィルター条件を入力してください。

    • ソースデータベースがその他のタイプの場合:テキストボックスにフィルター条件を入力します。

    説明

    フィルター条件の構文の詳細については、「ステートメントの例」をご参照ください。

  7. 設定が完了したら、[OK] をクリックします。

  8. プロンプトに従ってタスクの構成を完了します。

ステートメントの例

ソースデータベースが Tair/Redis の場合

フィルタータイプ

ステートメントの例

説明

単一プレフィックスの同期

同期するプレフィックス フィールドに dtsnew を入力します。

キーが dtsnew で始まるデータのみをターゲットデータベースに同期します。

単一プレフィックスによるフィルタリング

フィルタリングするプレフィックス フィールドに dtstest を入力します。

キーが dtstest で始まるデータを除外し、残りのデータをターゲットデータベースに同期します。

複数プレフィックスの同期

同期するプレフィックス フィールドに dtsnew,dtsold を入力します。

キーが dtsnew または dtsold で始まるデータのみをターゲットデータベースに同期します。

同期とフィルタリングの併用

同期するプレフィックス ボックスに dts を入力します。

フィルタリングするプレフィックス には、dtstest を入力します。

キーが dts で始まり、かつ dtstest で始まらないデータのみをターゲットデータベースに同期します。

ソースデータベースは MongoDB です

フィルタータイプ

ステートメントの例

説明

その他

{"_id":{$gt:"user100844658590795****",$lte:"user101674868045948****"}}

ユーザー ID でフィルターします。$gt は「より大きい」を、$lte は「以下」を意味します。MongoDB のフィルター条件の構文は、標準 SQL の WHERE 句とは異なります。詳細については、「SQL 文と MongoDB 文のマッピング」をご参照ください。

ソースデータベースがその他のタイプの場合

説明
  • フィルタリング条件 では、次のオペレーターがサポートされています。=!=<>、および in

  • フィルター条件の入力時に不明な点がある場合は、「よくある質問」をご参照ください。

ステートメントの例

フィルタータイプ

ステートメントの例

説明

数値

id > 100 and id <= 200 or id in (1, 2, 3)

id フィールドが 100 より大きく 200 以下であるか、または id フィールドが 1、2、3 のいずれかであるデータのみを同期または移行します。

文字列

address in('hangzhou','shanghai')

address フィールドが hangzhou または shanghai であるデータのみを同期または移行します。

時刻

create_time>'2020-01-01' または create_time>'2020-01-01 00:00:00'

2020 年以降に作成されたデータのみを同期または移行します。

重要
  • create_time>'2020' はサポートされていません。

  • DTS は、時間タイプのデータをフィルタリングする際に GMT+8 タイムゾーンを使用します。時間データにタイムゾーン情報が含まれている場合、フィルタリング条件に時間を入力する前に、その時間を GMT+8 タイムゾーンに変換する必要があります。

サポートされているタイプ

データベース

サポートされているデータ型

PostgreSQL

CHAR, BIGINT, SMALLINT, INTEGER, FLOAT4, FLOAT8, VARCHAR, DATE, TIMESTAMP, NUMERIC

Oracle

VARCHAR2, NVARCHAR2, NUMBER, DATE, ROWID, CHAR, BINARY_FLOAT, BINARY_DOUBLE, CLOB, NCLOB, TIMESTAMP, TIMESTAMP WITH TIME ZONE, UROWID

MySQL

DECIMAL, INTEGER, BIGINT, FLOAT4, DOUBLE, DATE, TIME, DATETIME, YEAR, VARCHAR

SQL Server

NCHAR, DATE, TIME, DATETIME2, TINYINT, SMALLINT, INT, SMALLDATETIME, REAL, DECIMAL, DATETIME, FLOAT, BIT, NUMERIC, BIGINT, VARCHAR, CHAR, TIMESTAMP, NVARCHAR, MONEY, SMALLMONEY, UNIQUEIDENTIFIER

DB2 LUW

SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, REAL, FLOAT, DOUBLE, DECFLOAT, CHAR, CHARACTER, VARCHAR, GRAPHIC, NCHAR, VARGRAPHIC, NVARCHAR, DATE, TIME, TIMESTAMP, BLOB, CLOB, DBCLOB, LONG VARG, LONG VARCHAR, LONG VARGRAPHIC, BINARY, VARBINARY, XML

DB2 AS400

BIGINT, INTEGER, SMALLINT, DECIMAL, NUMERIC, FLOAT, DECFLOAT, CHAR, VARCHAR, NCHAR, BINARY, DATE, TIME, TIMESTAMP, XML

次のステップ

  • フィルター文の表示

    • タスク構成が不完全です。オブジェクトの設定と詳細設定 ステップに戻ります。選択中のオブジェクト ボックスで、同期または移行タスクのオブジェクトを展開し、ターゲットオブジェクトを右クリックして、フィルタリング条件 を表示します。

    • タスクが設定済みで実行中の場合、類似タスクを作成するか、同期タスクのオブジェクトを変更して、オブジェクトの設定と詳細設定 ステップに進むことができます。選択中のオブジェクト ボックスで、同期タスクまたは移行タスクのオブジェクトを展開し、ターゲットオブジェクトを右クリックして、フィルタリング条件 を表示します。条件を表示した後、タスクをキャンセルできます。詳細については、「類似タスクの作成」および「同期タスクのオブジェクトを変更する」をご参照ください。

  • フィルター文の変更

    • タスクの構成が不完全です: オブジェクトの設定と詳細設定 ステップに戻ります。選択中のオブジェクト ボックスで、同期または移行タスクのオブジェクトを展開し、ターゲットオブジェクトを右クリックして、フィルタリング条件 を変更します。

    • タスクが構成済みで実行中の場合:

      • 移行タスク: 移行タスクのフィルター条件は変更できません。 タスクを再構成する必要があります。

      • 同期タスク: 同期タスクのオブジェクトを変更するには、オブジェクトの設定と詳細設定 ステージに移動します。選択中のオブジェクト ボックスで、同期オブジェクトを展開し、対象のオブジェクトを右クリックし、フィルタリング条件 を変更し、プロンプトに従ってタスク構成を完了します。詳細については、「同期タスクのオブジェクトを変更する」をご参照ください。

共通のエラー

フィルター条件の入力に誤りがある場合、タスクは以下のいずれかのエラーをレポートすることがあります。特定のエラーメッセージと次のステップを参照して、エラーを修正してください。

説明

エラーメッセージ内の正規表現 (.*)? は変数を表します。

エラーコード

エラーメッセージ

説明

DTS-RETRY-ERR-0070

In process of processing data (.*)? failed (.*)? Syntax error in SQL statement

タスクオブジェクトのフィルター条件のフォーマットが正しくありません。

DTS-RETRY-ERR-0145

Unknown column (.*)? in

タスクのフィルター条件で指定されたフィールドは、ソースデータベースに存在しません。

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

タスク構成のフィルター条件で指定されたフィールドは、ソースデータベースに存在しません。

DTS-RETRY-ERR-0188

null value in column (.*)? violates not-null constraint

ターゲットデータベースの列には非 NULL 制約がありますが、対応するソース列がフィルターで除外されているか、NULL 値です。

DTS-RETRY-ERR-0276

if (.*)? is specified it must not be empty

Elasticsearch の _id 列にマップされている列の値が空です。空の値を持つデータをフィルターで除外する必要があります。

よくある質問

  • 入力したフィルター条件が有効にならないのはなぜですか。

    フィルター条件のステートメントが正しくないか、現在のタスクが MongoDB ソースデータベースの増分タスクである可能性があります。MongoDB ソースを使用する増分タスクでは、フィルター条件はサポートされていません。

  • フィルター条件を変更した場合、その有効範囲はどこまでですか。

    • タスク設定が完了していない場合:ソースデータベースが MongoDB の場合、条件はフルタスク中にのみ有効になります。ソースデータベースが他のタイプの場合、条件はフルタスクと増分タスクの両方で有効になります。

    • タスクが設定され実行中の場合:ソースデータベースが MongoDB の場合、条件はサポートされていないため有効になりません。ソースデータベースが他のタイプの場合、条件は増分データに対してのみ有効になります。

  • フィルター条件を一括で設定できますか。

    いいえ。複数の対象オブジェクトに対して、個別のフィルター条件を指定できます。

  • ある条件に一致するデータをフィルターし、残りのデータをターゲットデータベースに同期または移行することはできますか。

    • ソースデータベースが Tair/Redis の場合、フィルタリングするプレフィックス フィールドにプレフィックスを入力して、一致するキーをフィルターできます。

    • 他のタイプのソースデータベースの場合:いいえ、できません。逆のフィルター条件を設定して、必要に応じてデータをフィルターできます。たとえば、age フィールドが 25 のデータをフィルターする場合、フィルタリング条件age > 25 or age < 25 と入力します。

  • 複数のキーをフィルターする必要がある場合、フィルター条件はどのように入力しますか。

    キーをカンマ (,) で区切って入力します。

  • 同期するプレフィックスフィルタリングするプレフィックス を同時に使用できますか。

    はい、できます。同期キーとフィルターキーの両方のルールが有効になります。

  • フィルター条件は API 呼び出しをサポートしていますか。

    サポートされていません。

関連 API

API 操作

説明

ConfigureDtsJob

DTS の移行タスクまたは同期タスクを設定します。 Dblist で、filter パラメーターを設定してフィルター条件を指定します。