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

Data Transmission Service:SQL 条件を使用したタスクデータのフィルタリング

最終更新日:Sep 15, 2026

タスクオブジェクトの設定時に SQL 条件を指定することで、条件を満たすデータのみを同期または移行できます。この機能は、定期的なデータ同期、移行、およびテーブル分割のシナリオに適用されます。

前提条件

タスク設定を開始し、オブジェクトの設定と詳細設定 ステップに進んでいること。タスク設定を開始するには、「データ同期タスクの設定 (新しいコンソール)」をご参照ください。

制限事項

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

    OLUMN1 IN (SELECT id FROM table1).

  • ソーステーブルまたはコレクションに、名前の大文字と小文字のみが異なる 2 つのカラムが含まれている場合、フィルタータスクで期待される結果が得られない場合があります。

    o 名前の大文字と小文字のみが異なるカラムの場合、フィルタータスクで期待どおりの結果が得られない場合があります。

  • ソースデータベースタイプが Tair/Redis の場合、プレフィックスベースのキーフィルタリングのみがサポートされます。

    、プレフィックスによるキーのフィルタリングのみがサポートされます。

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

    同期または移行タスクは、条件付きフィルタリングをサポートします。 増分同期または増分移行はサポートされていません。

  • ソースデータベースタイプが Tair/Redis および MongoDB 以外のデータベースの場合、フィルター条件に引用符が必要な場合は、シングルクォーテーション (') を使用してください。

    833fe828ef">, フィルター条件に引用符が必要な場合は、単一引用符 (') を使用します。

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

    フィルター条件の末尾。そうしないと、タスクが失敗する場合があります。

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

    重要

    ソースデータベースが SQL Server の DTS インスタンスでは、フィルターフィールドがクラスター化インデックス列でない場合、フィルターロジックは有効になりません。

  • DTS のフィルターメカニズムは事前フィルタリングです。設定されたフィルターフィールドの値が変更された場合、フィルタリングは変更前の値に基づいて実行されます。

    例: フィルター条件 enabled = 1 を設定したとします。DTS はこのフィルター条件を満たすデータのみを同期します。データフィールド enabled = 1enabled = 0 に変更された場合、システムはこれを、まず enabled = 1 のデータを削除し、次に enabled = 0 のデータを書き込むと見なします。前の操作はフィルター条件を満たすため、データは削除されます。しかし、後続のデータはフィルター条件を満たさないため同期されません。enabled = 0enabled = 1 の両方のデータを同期する必要がある場合は、フィルター条件を削除して再同期してください。

操作手順

説明

フィルター条件の設定方法は、ソースデータベースのタイプによって異なります。これは、Tair/RedisMongoDB、およびその他のデータベースタイプの 3 つのカテゴリに分類されます。

個々のオブジェクトに対するフィルター条件の設定

  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' or 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 制約を持つ列がフィルターで除外されたか、ソースに対応する列の値がありません。

DTS-RETRY-ERR-0276

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

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

よくある質問

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

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

  • フィルター条件を変更した場合、有効範囲はどうなりますか。

    • 現在のタスクが未設定の場合:ソースデータベースが MongoDB の場合、フィルター条件は全量タスクフェーズでのみ有効になります。ソースデータベースが他のタイプの場合、フィルター条件は全量タスクフェーズと増分タスクフェーズの両方で有効になります。

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

  • DTS は、特定の条件を満たすデータを除外し、残りのデータを送信先に同期または移行することをサポートしていますか。

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

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

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

    カンマ (,) を区切り文字として使用します。

  • 同期するプレフィックスフィルタリングするプレフィックス の両方を入力できますか?

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

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

    いいえ。

関連 API

API

説明

ConfigureDtsJob

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