All Products
Search
Document Center

Data Transmission Service:Filter data task dengan kondisi SQL

Last Updated:Sep 15, 2026

Tentukan kondisi SQL selama konfigurasi objek task untuk menyinkronkan atau memigrasikan hanya data yang memenuhi kondisi tersebut. Fitur ini berlaku untuk skenario sinkronisasi data periodik, migrasi, dan pemisahan tabel.

Prasyarat

Anda telah memulai konfigurasi task dan mencapai langkah Configure Objects and Advanced Settings. Untuk memulai konfigurasi task, ikuti Configure a data synchronization task (new console).

Batasan

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

    COLUMN1 IN (SELECT id FROM table1).

  • Jika tabel atau koleksi sumber berisi dua kolom yang namanya hanya berbeda dalam kapitalisasi huruf, task filter mungkin gagal menghasilkan hasil yang diharapkan.

    Jika terdapat kolom yang namanya hanya berbeda dalam hal kapitalisasi, tugas filter mungkin gagal menghasilkan hasil yang diharapkan.

  • Ketika tipe database sumber adalah Tair/Redis, hanya filtering kunci berbasis awalan yang didukung.

    , hanya penyaringan kunci berbasis prefiks yang didukung.

  • Ketika tipe database sumber adalah MongoDB, hanya task sinkronisasi atau migrasi penuh yang mendukung filtering kondisional. Sinkronisasi atau migrasi inkremental tidak didukung.

    Tugas sinkronisasi atau migrasi mendukung pemfilteran bersyarat. Sinkronisasi atau migrasi inkremental tidak didukung.

  • Ketika tipe database sumber adalah database selain Tair/Redis dan MongoDB, jika kondisi filter memerlukan tanda kutip, gunakan tanda kutip tunggal (').

    833fe828ef", jika kondisi filter memerlukan tanda kutip, gunakan tanda kutip tunggal (').

  • Jangan menambahkan titik koma (;) di akhir kondisi filter. Jika tidak, task mungkin gagal.

    akhir dari kondisi filter. Jika tidak, tugas tersebut dapat gagal.

  • Jika operasi UPDATE dilakukan pada database sumber dan operasi tersebut memenuhi kondisi tertentu (nilai pra-gambar memenuhi kondisi filter, tetapi nilai post-image tidak), DTS secara default mengonversi pernyataan UPDATE menjadi pernyataan DELETE dan mengeksekusinya di database tujuan.

    Penting

    Pada instans DTS yang database sumbernya adalah SQL Server, jika bidang filter bukan kolom indeks terkluster, logika filter tidak berlaku.

  • Mekanisme filter DTS bersifat pre-filtering. Jika nilai bidang filter yang dikonfigurasi diubah, filtering dilakukan berdasarkan nilai sebelum perubahan.

    Contoh: Asumsikan Anda mengonfigurasi kondisi filter enabled = 1. DTS hanya akan menyinkronkan data yang memenuhi kondisi filter ini. Jika bidang data enabled = 1 diubah menjadi enabled = 0, sistem menganggap ini sebagai penghapusan data enabled = 1 terlebih dahulu, lalu menulis data enabled = 0. Karena operasi sebelumnya memenuhi kondisi filter, data tersebut akan dihapus; namun, data berikutnya tidak akan disinkronkan karena tidak memenuhi kondisi filter. Jika Anda perlu menyinkronkan data enabled = 0 dan enabled = 1, hapus kondisi filter dan lakukan sinkronisasi ulang.

Prosedur

Catatan

Metode konfigurasi kondisi filter bergantung pada tipe database sumber. Terdapat tiga kategori: Tair/Redis, MongoDB, dan tipe database lainnya.

Konfigurasi kondisi filter untuk objek individual

  1. Pada langkah Configure Objects, pindahkan objek task ke area Selected Objects.

    Catatan

    Ketika tipe database sumber adalah MongoDB, granularitas objek task harus berada pada level koleksi. Ketika tipe database sumber adalah Tair/Redis, granularitas harus berada pada level Redis DB. Ketika database sumber bertipe lain, granularitas harus berada pada level tabel.

  2. Klik kanan objek target.

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

    • Ketika tipe database sumber adalah Tair/Redis: Pada kotak dialog Edit Schema yang muncul, masukkan Prefixes of Keys to Be Synchronized (allowlist) atau Prefixes of Keys to Be Filtered Out (blocklist).

    • Ketika tipe database sumber adalah MongoDB: Pada kotak dialog Edit Table yang muncul, masukkan Filter Conditions.

    • Ketika tipe database sumber adalah tipe lain: Pada kotak dialog Edit Table yang muncul, masukkan Filter Conditions.

    Catatan

    Untuk informasi tentang sintaksis kondisi filter, lihat Sample statements.

  4. Setelah menyelesaikan pengaturan, klik OK.

  5. Ikuti petunjuk untuk menyelesaikan konfigurasi task selanjutnya.

Konfigurasi kondisi filter secara batch

  1. Pada langkah Configure Objects, pindahkan objek task ke area Selected Objects.

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

  3. Pada kotak Select Objects, pilih objek yang akan diedit (untuk mengatur kondisi filter awalan).

    Catatan

    Pertahankan nilai default untuk Select Type.

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

    Catatan

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

  5. Pilih Select Edit Mode.

    • Add: Pertahankan kondisi filter yang ada pada task saat ini dan tambahkan kondisi filter baru.

    • Overwrite: Hapus kondisi filter yang ada pada task saat ini dan gunakan kondisi filter baru.

  6. Konfigurasi kondisi filter.

    • Ketika tipe database sumber adalah Tair/Redis: Berdasarkan skenario aktual, pilih Prefixes of Keys to Be Synchronized atau Prefixes of Keys to Be Filtered Out, lalu masukkan awalan yang sesuai.

    • Ketika tipe database sumber adalah MongoDB: Pada kotak teks, masukkan kondisi filter.

    • Ketika tipe database sumber adalah tipe lain: Pada kotak teks, masukkan kondisi filter.

    Catatan

    Untuk informasi tentang sintaksis kondisi filter, lihat Sample statements.

  7. Setelah menyelesaikan pengaturan, klik OK.

  8. Ikuti petunjuk untuk menyelesaikan konfigurasi task selanjutnya.

Contoh pernyataan

Tipe database sumber adalah Tair/Redis

Jenis filter

Contoh pernyataan

Deskripsi

Sinkronisasi satu awalan

Masukkan Prefixes of Keys to Be Synchronized: dtsnew

Hanya sinkronkan data yang kuncinya diawali dengan dtsnew dari objek yang akan disinkronkan ke tujuan.

Filter satu awalan

Masukkan Prefixes of Keys to Be Filtered Out: dtstest

Filter data yang kuncinya diawali dengan dtstest dari objek yang akan disinkronkan, dan sinkronkan data sisanya ke tujuan.

Sinkronisasi beberapa awalan

Masukkan Prefixes of Keys to Be Synchronized: dtsnew,dtsold

Hanya sinkronkan data yang kuncinya diawali dengan dtsnew atau dtsold dari objek yang akan disinkronkan ke tujuan.

Gabungkan sinkronisasi dan filter

Masukkan Prefixes of Keys to Be Synchronized: dts

Masukkan Prefixes of Keys to Be Filtered Out: dtstest

Hanya sinkronkan data yang kuncinya diawali dengan dts tetapi tidak diawali dengan dtstest dari objek yang akan disinkronkan ke tujuan.

Tipe database sumber adalah MongoDB

Jenis filter

Contoh pernyataan

Deskripsi

Lainnya

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

Filter berdasarkan ID pengguna, di mana $gt berarti lebih besar dari, dan $lte berarti kurang dari atau sama dengan. Pernyataan yang didukung oleh kondisi filter MongoDB berbeda dari pernyataan WHERE SQL standar. Untuk informasi selengkapnya, lihat SQL to MongoDB mapping.

Database sumber bertipe lain

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

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

Contoh pernyataan

Jenis filter

Contoh pernyataan

Deskripsi

Numerik

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

Hanya sinkronkan atau migrasikan data yang bidang id-nya lebih besar dari 100 dan kurang dari atau sama dengan 200, atau bidang id-nya bernilai 1, 2, atau 3.

String

address in('hangzhou','shanghai')

Hanya sinkronkan atau migrasikan data yang bidang address-nya bernilai hangzhou atau shanghai.

Waktu

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

Hanya sinkronkan atau migrasikan data yang dibuat setelah tahun 2020.

Penting
  • Memasukkan create_time>'2020' tidak didukung.

  • Ketika DTS memfilter data bertipe waktu, zona waktu yang digunakan adalah GMT+8. Jika data waktu Anda berisi informasi zona waktu, konversikan terlebih dahulu waktu dalam kondisi filter ke waktu GMT+8 yang sesuai, lalu masukkan ke dalam Filter Conditions.

Tipe yang didukung

Database

Tipe 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

Operasi lanjutan

  • Lihat pernyataan filter

    • Task saat ini belum dikonfigurasi: Kembali ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan atau dimigrasikan, lalu klik kanan objek target untuk melihat Filter Conditions.

    • Task saat ini telah dikonfigurasi dan sedang berjalan: Anda dapat menggunakan fitur Create Similar Task atau Modify Sync Objects untuk masuk ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan atau dimigrasikan, lalu klik kanan objek target untuk melihat Filter Conditions (setelah melihat, batalkan task; tidak perlu melanjutkan). Untuk informasi selengkapnya, lihat Create a similar job dan Modify synchronization objects.

  • Modifikasi pernyataan filter

    • Task saat ini belum dikonfigurasi: Kembali ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan atau dimigrasikan, lalu klik kanan objek target untuk memodifikasi Filter Conditions.

    • Task saat ini telah dikonfigurasi dan sedang berjalan:

      • Task migrasi: Task migrasi tidak mendukung modifikasi kondisi filter. Anda perlu mengonfigurasi ulang task.

      • Task sinkronisasi: Gunakan fitur Modify Sync Objects untuk masuk ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan, lalu klik kanan objek target untuk memodifikasi Filter Conditions, dan ikuti petunjuk untuk menyelesaikan konfigurasi task selanjutnya. Untuk informasi selengkapnya, lihat Modify synchronization objects.

Error umum

Jika kondisi filter yang Anda masukkan salah, task mungkin mengembalikan error berikut. Perbaiki error berdasarkan pesan error spesifik dan Operasi lanjutan.

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 bidang filter yang dikonfigurasi untuk objek sinkronisasi salah.

DTS-RETRY-ERR-0145

Unknown column (.*)? in

Bidang yang dikonfigurasi dalam kondisi filter task saat ini tidak ada di database sumber.

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

Bidang yang dikonfigurasi dalam kondisi filter task saat ini tidak ada di database sumber.

DTS-RETRY-ERR-0188

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

Kolom dengan kendala NOT NULL di tujuan difilter keluar, atau sumber tidak memiliki nilai kolom yang sesuai.

DTS-RETRY-ERR-0276

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

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

FAQ

  • Mengapa kondisi filter yang saya masukkan tidak berlaku?

    Pernyataan kondisi filter salah, atau task saat ini merupakan task inkremental dengan database sumber MongoDB (yang tidak mendukung kondisi filter).

  • Apa cakupan efektif setelah saya memodifikasi kondisi filter?

    • Task saat ini belum dikonfigurasi: Ketika database sumber adalah MongoDB, kondisi filter hanya berlaku pada fase task penuh. Ketika database sumber bertipe lain, kondisi filter berlaku pada fase task penuh dan inkremental.

    • Task saat ini telah dikonfigurasi dan sedang berjalan: Ketika database sumber adalah MongoDB, kondisi filter tidak berlaku (tidak didukung). Ketika database sumber bertipe lain, kondisi filter hanya berlaku untuk data inkremental.

  • Apakah DTS mendukung filtering data yang memenuhi kondisi tertentu dan menyinkronkan atau memigrasikan data sisanya ke tujuan?

    • Ketika tipe database sumber adalah Tair/Redis: Ya. Anda dapat memasukkan Prefixes of Keys to Be Filtered Out untuk memfilter kunci yang memenuhi kondisi.

    • Ketika database sumber bertipe lain: Tidak. Anda dapat mengatur kondisi filter kebalikannya untuk memenuhi kebutuhan Anda. Misalnya, jika Anda perlu memfilter data yang bidang age-nya bernilai 25, Anda dapat memasukkan age > 25 or age < 25 di Filter Conditions.

  • Bagaimana cara memasukkan kondisi filter jika terdapat beberapa kunci yang perlu difilter?

    Gunakan koma (,) sebagai pemisah.

  • Apakah saya dapat memasukkan Prefixes of Keys to Be Synchronized dan Prefixes of Keys to Be Filtered Out sekaligus?

    Ya. Aturan sinkronisasi dan filter untuk kunci keduanya berlaku.

  • Apakah kondisi filter mendukung panggilan API?

    Tidak.

API terkait

API

Deskripsi

ConfigureDtsJob

Konfigurasi task migrasi atau sinkronisasi DTS dan konfigurasikan parameter filter dalam Dblist untuk mengatur kondisi filter.