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

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

最終更新日:Nov 09, 2025

データ同期または移行タスクのオブジェクトを構成するときに、フィルター条件を設定できます。これにより、要件を満たすデータのみをソースデータベースからターゲットデータベースに同期または移行できます。この機能は、データベースシャード、テーブルパーティション、部分的なデータ同期または移行などのシナリオでよく使用されます。

前提条件

タスクは オブジェクト設定 ステップにあります。このステップに移動する方法については、「データ同期シナリオ」および「データ移行シナリオ」のトピックをご参照ください。

注意

  • 複雑なフィルターステートメントはサポートされていません。例: COLUMN1 IN (SELECT id FROM table1)

  • ソーステーブルまたはコレクションに、大文字と小文字のみが異なる名前の 2 つの列が含まれている場合、フィルタリングタスクで予期しない結果が生じることがあります。

  • ソースデータベースが Tair/Redis インスタンスの場合、キープレフィックスでのみデータをフィルタリングできます。

  • ソースデータベースが MongoDB データベースの場合、完全なデータ移行または同期タスクに対してのみフィルター条件を設定できます。増分移行または同期では、フィルター条件はサポートされていません。

  • ソースデータベースが Tair/Redis または MongoDB データベースでない場合、引用符が必要な場合はフィルター条件で単一引用符 (') を使用します。

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

  • ソースデータベースで UPDATE 文を実行し、データのプリイメージがフィルター条件を満たし、ポストイメージが満たさない場合、Data Transmission Service (DTS) は UPDATE 文を DELETE 文に変換します。その後、DTS はターゲットデータベースで 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 タイムゾーンに変換する必要があります。次に、変換した時間を フィルタリング条件 フィールドに入力します。

次のステップ

  • フィルターステートメントの表示

    • タスクがまだ構成されていない場合: オブジェクトの設定と詳細設定 ステップに移動します。選択中のオブジェクト ボックスで、タスクオブジェクトを展開します。次に、ターゲットオブジェクトを右クリックして フィルタリング条件 を表示します。

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

  • フィルターステートメントの変更

    • タスクがまだ構成されていない場合: オブジェクトの設定と詳細設定 ステップに移動します。選択中のオブジェクト ボックスで、タスクオブジェクトを展開します。次に、ターゲットオブジェクトを右クリックして フィルタリング条件 を変更します。

    • タスクは構成され、実行中です:

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

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

一般的なエラー

不正なフィルター条件を入力すると、タスクがエラーを報告する場合があります。エラーメッセージと「次のステップ」セクションの情報に基づいてエラーを修正してください。

説明

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

エラーコード

エラーメッセージ

説明

DTS-RETRY-ERR-0070

データ処理中 (.*)? 失敗 (.*)? SQL 文の構文エラー

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

DTS-RETRY-ERR-0145

不明な列 (.*)? in

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

DTS-RETRY-ERR-0147

SQL 構文にエラーがあります

現在のジョブ構成のフィルター条件が、ソースデータベースに存在しないフィールドを参照しています。

DTS-RETRY-ERR-0188

列 (.*)? の NULL 値は非 NULL 制約に違反します

ターゲットデータベースの NOT NULL 制約を持つ列が除外されたか、ソースデータベースの対応する列に NULL 値があります。

DTS-RETRY-ERR-0276

(.*)? が指定されている場合、空にすることはできません

Elasticsearch の _id 列にマッピングされた値が空です。この列の値が空であるデータをフィルターで除外する必要があります。

よくある質問

  • フィルター条件が有効にならないのはなぜですか?

    フィルター条件の文が無効です。または、ソースが MongoDB データベースの場合、増分タスクではフィルター条件はサポートされていません。

  • フィルター条件を変更した後、変更の範囲はどうなりますか?

    • タスクがまだ構成されていない場合: MongoDB ソースの場合、条件は完全なタスクフェーズ中にのみ有効になります。他のデータベースソースの場合、条件は完全タスクフェーズと増分タスクフェーズの両方で有効になります。

    • タスクがすでに構成され実行中の場合: MongoDB ソースの場合、条件は有効になりません。他のデータベースソースの場合、条件は増分データにのみ有効になります。

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

    いいえ、できません。各ターゲットオブジェクトに対して個別にフィルター条件を設定する必要があります。

  • 条件を満たすデータを除外し、残りのデータをターゲットデータベースに同期または移行できますか?

    • ソースが Tair/Redis インスタンスの場合: はい、できます。フィルタリングするプレフィックス に値を入力して、条件を満たすキーを除外できます。

    • ソースが別のタイプのデータベースの場合: いいえ、できません。要件を満たすために、反対のフィルター条件を設定してみてください。たとえば、age フィールドの値が 25 のデータを除外するには、フィルタリング条件 フィールドに age > 25 or age < 25 と入力します。

  • 複数のキーでフィルタリングする必要がある場合、フィルター条件をどのように指定しますか?

    カンマ (,) を使用してキーを区切ります。

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

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

  • フィルター条件で API 呼び出しはサポートされていますか?

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

関連 API 操作

API 操作

説明

ConfigureDtsJob

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