全部产品
Search
文档中心

Data Transmission Service:Tetapkan kondisi filter

更新时间:Jan 16, 2026

Saat mengonfigurasi objek tugas untuk sinkronisasi atau migrasi, Anda dapat menetapkan kondisi filter guna menyinkronisasi atau memigrasikan data tertentu dari database sumber ke database tujuan. Fitur ini berguna dalam skenario seperti sharding atau saat hanya sebagian data yang perlu dimigrasikan.

Prasyarat

Tugas berada pada tahap Configure Objects. Untuk petunjuk cara memasuki tahap ini, lihat Ikhtisar solusi sinkronisasi dan Ikhtisar solusi migrasi.

Catatan

  • Pernyataan filter kompleks, seperti COLUMN1 IN (SELECT id FROM table1), tidak didukung.

  • Jika tabel atau koleksi sumber berisi dua kolom yang namanya hanya berbeda dalam huruf besar/kecil, tugas filtering mungkin tidak berjalan sebagaimana diharapkan.

  • Jika database sumber Anda adalah Tair/Redis, Anda hanya dapat memfilter data berdasarkan awalan kunci.

  • Jika database sumber adalah MongoDB, filtering kondisional hanya didukung untuk tugas sinkronisasi atau migrasi penuh, bukan untuk tugas inkremental.

  • Untuk database sumber selain Tair/Redis atau MongoDB, gunakan tanda kutip tunggal (') bila kondisi filter memerlukan tanda kutip.

  • Jangan tambahkan titik koma (;) di akhir kondisi filter karena dapat menyebabkan tugas gagal.

  • Jika operasi UPDATE pada database sumber memenuhi kondisi tertentu di mana nilai pra-gambar memenuhi kondisi filter tetapi nilai post-image tidak, DTS secara default mengubah pernyataan UPDATE menjadi pernyataan DELETE, lalu menjalankan pernyataan DELETE tersebut pada database tujuan.

    Penting

    Untuk instans DTS dengan database sumber SQL Server, logika filtering ini tidak berlaku jika bidang yang difilter bukan kolom indeks terkluster.

Prosedur

Catatan

Metode penetapan kondisi filter berbeda-beda tergantung jenis database sumber, seperti Tair/Redis, MongoDB, dan jenis database lainnya.

Pengaturan individual

  1. Pada langkah Configure Objects, pindahkan objek tugas ke kotak Selected Objects.

    Catatan

    Untuk database sumber MongoDB, Anda harus memilih objek pada granularitas koleksi. Untuk database sumber Tair/Redis, Anda harus memilih objek pada granularitas Redis DB. Untuk jenis database lainnya, Anda harus memilih objek pada granularitas tabel.

  2. Klik kanan objek target.

  3. Pada kotak dialog yang muncul, masukkan kondisi filter.

    • Jika database sumber adalah Tair/Redis, pada kotak dialog Edit Schema, masukkan nilai untuk Prefixes of Keys to Be Synchronized (daftar putih) atau Prefixes of Keys to Be Filtered Out (blacklist).

    • Jika database sumber adalah MongoDB, pada kotak dialog Edit Table, masukkan nilai untuk Filter Conditions.

    • Untuk jenis database sumber lainnya: Pada kotak dialog Edit Table, masukkan nilai untuk Filter Conditions.

    Catatan

    Untuk informasi lebih lanjut tentang sintaksis kondisi filter, lihat Contoh pernyataan.

  4. Setelah selesai mengonfigurasi pengaturan, klik OK.

  5. Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.

Tetapkan kondisi secara batch

  1. Pada langkah Configure Objects, pindahkan objek tugas ke kotak Selected Objects.

  2. Di pojok kanan atas area Selected Objects, klik Batch Edit.

  3. Pada kotak Select Objects, pilih objek yang akan dikonfigurasi dengan kondisi filter berbasis awalan.

    Catatan

    Anda dapat mempertahankan nilai default untuk Select Type.

  4. Pada area Select Editing Type, klik tab Filter Conditions.

    Catatan

    Jika database sumber adalah Tair/Redis, klik tab Prefixes of Keys to Be Synchronized/Filtered Out.

  5. Pilih Select Edit Mode.

    • Add: Menambahkan kondisi filter baru ke kondisi filter yang sudah ada untuk tugas tersebut.

    • Overwrite: Menghapus kondisi filter yang sudah ada untuk tugas tersebut dan menerapkan kondisi filter baru.

  6. Tetapkan kondisi filter.

    • Jika database sumber adalah Tair/Redis, Anda dapat memilih Prefixes of Keys to Be Synchronized atau Prefixes of Keys to Be Filtered Out dan masukkan awalan yang sesuai.

    • Jika database sumber adalah MongoDB, masukkan kondisi filter di kotak teks.

    • Jika database sumber adalah jenis lainnya: Masukkan kondisi filter di kotak teks.

    Catatan

    Untuk informasi lebih lanjut tentang sintaksis kondisi filter, lihat Contoh pernyataan.

  7. Setelah selesai mengonfigurasi pengaturan, klik OK.

  8. Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.

Contoh pernyataan

Database sumber adalah Tair/Redis

Jenis filter

Contoh pernyataan

Deskripsi

Sinkronisasi satu awalan

Masukkan dtsnew di bidang Prefixes of Keys to Be Synchronized.

Hanya menyinkronisasi data yang kuncinya diawali dengan dtsnew ke database tujuan.

Filter berdasarkan satu awalan

Masukkan dtstest di bidang Prefixes of Keys to Be Filtered Out.

Memfilter data yang kuncinya diawali dengan dtstest dan menyinkronisasi data sisanya ke database tujuan.

Sinkronisasi beberapa awalan

Masukkan dtsnew,dtsold di bidang Prefixes of Keys to Be Synchronized.

Hanya menyinkronisasi data yang kuncinya diawali dengan dtsnew atau dtsold ke database tujuan.

Gunakan sinkronisasi dan filtering bersamaan

Masukkan dts di kotak Prefixes of Keys to Be Synchronized.

Untuk Prefixes of Keys to Be Filtered Out, masukkan dtstest.

Hanya menyinkronisasi data yang kuncinya diawali dengan dts tetapi bukan dtstest ke database tujuan.

Database sumber adalah MongoDB

Jenis filter

Contoh pernyataan

Deskripsi

Lainnya

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

Memfilter berdasarkan ID pengguna, di mana $gt berarti lebih besar dari dan $lte berarti kurang dari atau sama dengan. Sintaksis untuk kondisi filter MongoDB berbeda dari klausa WHERE SQL standar. Untuk informasi lebih lanjut, lihat Pemetaan antara pernyataan SQL dan MongoDB.

Database sumber adalah jenis lainnya

Catatan
  • Filter Conditions mendukung operator berikut: =, !=, <, >, dan in.

  • Jika Anda memiliki pertanyaan saat memasukkan kondisi filter, lihat FAQ.

Contoh pernyataan

Jenis filter

Contoh pernyataan

Deskripsi

Numerik

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

Hanya menyinkronisasi atau memigrasikan data di mana bidang id lebih besar dari 100 dan kurang dari atau sama dengan 200, atau di mana bidang id bernilai 1, 2, atau 3.

String

address in('hangzhou','shanghai')

Hanya menyinkronisasi atau memigrasikan data di mana bidang address bernilai hangzhou atau shanghai.

Waktu

create_time>'2020-01-01' atau create_time>'2020-01-01 00:00:00'

Hanya menyinkronisasi atau memigrasikan data yang dibuat setelah tahun 2020.

Penting
  • create_time>'2020' tidak didukung.

  • Saat DTS memfilter data bertipe waktu, zona waktu yang digunakan adalah GMT+8. Jika data waktu Anda mencakup informasi zona waktu, Anda harus mengonversi waktu dalam kondisi filter ke zona waktu GMT+8 sebelum memasukkannya di Filter Conditions.

Jenis yang didukung

Database

Jenis data yang didukung

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

Langkah selanjutnya

  • Lihat pernyataan filter

    • Konfigurasi tugas belum lengkap. Kembali ke langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek untuk tugas sinkronisasi atau migrasi, klik kanan objek target, lalu lihat Filter Conditions.

    • Jika tugas telah dikonfigurasi dan sedang berjalan, Anda dapat membuat tugas serupa atau mengubah objek tugas sinkronisasi untuk masuk ke langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek untuk tugas sinkronisasi atau migrasi, klik kanan objek target, lalu lihat Filter Conditions. Setelah melihat kondisi tersebut, Anda dapat membatalkan tugas. Untuk informasi lebih lanjut, lihat Buat tugas serupa dan Ubah objek tugas sinkronisasi.

  • Ubah pernyataan filter

    • Konfigurasi tugas belum lengkap: Kembali ke langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek untuk tugas sinkronisasi atau migrasi, klik kanan objek target, lalu ubah Filter Conditions.

    • Tugas ini telah dikonfigurasi dan sedang berjalan:

      • Tugas migrasi: Anda tidak dapat mengubah kondisi filter untuk tugas migrasi. Anda harus mengonfigurasi ulang tugas tersebut.

      • Tugas sinkronisasi: Untuk mengubah objek tugas sinkronisasi, masuk ke tahap Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek sinkronisasi, klik kanan objek target, ubah Filter Conditions, lalu ikuti petunjuk untuk menyelesaikan konfigurasi tugas. Untuk informasi lebih lanjut, lihat Ubah objek tugas sinkronisasi.

Error umum

Jika Anda memasukkan kondisi filter yang salah, tugas mungkin menampilkan salah satu error berikut. Rujuk pesan error spesifik dan Langkah selanjutnya untuk memperbaiki error tersebut.

Catatan

Ekspresi reguler (.*)? dalam pesan error merepresentasikan variabel.

Kode error

Pesan error

Deskripsi

DTS-RETRY-ERR-0070

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

Format kondisi filter untuk objek tugas salah.

DTS-RETRY-ERR-0145

Unknown column (.*)? in

Bidang yang ditentukan dalam kondisi filter untuk tugas tidak ada di database sumber.

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

Bidang yang ditentukan dalam kondisi filter untuk konfigurasi tugas tidak ada di database sumber.

DTS-RETRY-ERR-0188

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

Kolom di database tujuan memiliki Kendala NOT NULL, tetapi kolom sumber yang sesuai difilter atau memiliki nilai null.

DTS-RETRY-ERR-0276

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

Nilai kolom yang dipetakan ke kolom _id di Elasticsearch kosong. Anda harus memfilter data dengan nilai kosong tersebut.

FAQ

  • Mengapa kondisi filter tidak berlaku setelah saya memasukkannya?

    Pernyataan kondisi filter salah, atau tugas saat ini merupakan tugas inkremental untuk database sumber MongoDB. Kondisi filter tidak didukung untuk tugas inkremental yang menggunakan sumber MongoDB.

  • Setelah saya mengubah kondisi filter, apa cakupan efeknya?

    • Jika konfigurasi tugas belum lengkap: Jika database sumber adalah MongoDB, kondisi hanya berlaku selama tugas penuh. Jika database sumber adalah jenis lain, kondisi berlaku selama tugas penuh maupun inkremental.

    • Jika tugas telah dikonfigurasi dan sedang berjalan: Jika database sumber adalah MongoDB, kondisi tidak berlaku karena tidak didukung. Jika database sumber adalah jenis lain, kondisi hanya berlaku untuk data inkremental.

  • Apakah saya dapat menetapkan kondisi filter secara batch?

    Tidak. Anda dapat menentukan kondisi filter terpisah untuk beberapa objek target.

  • Apakah saya dapat memfilter data yang memenuhi suatu kondisi dan menyinkronisasi atau memigrasikan data sisanya ke database tujuan?

    • Jika database sumber adalah Tair/Redis, Anda dapat memasukkan awalan di bidang Prefixes of Keys to Be Filtered Out untuk memfilter kunci yang cocok.

    • Untuk jenis database sumber lainnya: Tidak. Anda dapat menetapkan kondisi filter kebalikannya untuk memfilter data sesuai kebutuhan. Misalnya, jika Anda ingin memfilter data di mana bidang age bernilai 25, Anda dapat memasukkan age > 25 or age < 25 di Filter Conditions.

  • Jika saya perlu memfilter beberapa kunci, bagaimana cara memasukkan kondisi filternya?

    Anda dapat memisahkan kunci-kunci tersebut dengan koma (,).

  • Apakah saya dapat menggunakan Prefixes of Keys to Be Synchronized dan Prefixes of Keys to Be Filtered Out secara bersamaan?

    Ya, Anda bisa. Aturan untuk kedua jenis kunci—sinkronisasi dan filtering—akan berlaku.

  • Apakah kondisi filter mendukung pemanggilan API?

    Tidak didukung.

Operasi API terkait

Operasi API

Deskripsi

ConfigureDtsJob

Mengonfigurasi tugas migrasi atau sinkronisasi DTS. Di Dblist, konfigurasikan parameter filter untuk menetapkan kondisi filter.