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

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

最終更新日:Aug 26, 2026

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

前提条件

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

制限事項

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

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

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

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

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

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

  • ソースデータベースで 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' または 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 はフィルター条件の一括設定をサポートしていますか。

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

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

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

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

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

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

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

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

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

    いいえ。

関連 API

API

説明

ConfigureDtsJob

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