全部产品
Search
文档中心

Data Transmission Service:Tetapkan kondisi filter

更新时间:Nov 11, 2025

Saat mengonfigurasi objek untuk tugas sinkronisasi atau migrasi data, Anda dapat menetapkan kondisi filter agar hanya data yang memenuhi persyaratan tertentu dari database sumber yang disinkronkan atau dimigrasikan ke database tujuan. Fitur ini umumnya digunakan dalam skenario seperti sharding database, partisi tabel, serta sinkronisasi atau migrasi data sebagian.

Prasyarat

Tugas berada pada langkah Configure Objects. Untuk informasi tentang cara menuju langkah ini, lihat topik dalam Skenario sinkronisasi data dan Skenario migrasi data.

Catatan

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

  • Jika tabel atau koleksi sumber berisi dua kolom yang namanya hanya berbeda dalam kapitalisasi huruf, tugas pemfilteran mungkin menghasilkan hasil yang tidak diharapkan.

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

  • Jika database sumber adalah database MongoDB, Anda hanya dapat menetapkan kondisi filter untuk tugas migrasi atau sinkronisasi data penuh. Kondisi filter tidak didukung untuk migrasi atau sinkronisasi inkremental.

  • Jika database sumber bukan Tair/Redis atau MongoDB, gunakan tanda kutip tunggal (') dalam kondisi filter jika diperlukan.

  • Jangan tambahkan titik koma (;) di akhir kondisi filter; jika tidak, tugas mungkin gagal.

  • Jika Anda menjalankan pernyataan UPDATE pada database sumber dan citra awal data memenuhi kondisi filter tetapi citra akhir tidak, Data Transmission Service (DTS) akan mengubah pernyataan UPDATE tersebut menjadi pernyataan DELETE, lalu menjalankannya pada database tujuan.

    Penting

    Untuk instans DTS yang bersumber dari database SQL Server, logika pemfilteran ini tidak berlaku jika bidang yang difilter bukan kolom indeks terkluster.

Prosedur

Catatan

Metode penetapan kondisi filter bergantung pada jenis database sumber: Tair/Redis, MongoDB, atau jenis database lainnya.

Tetapkan untuk satu objek

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

    Catatan

    Jika sumbernya adalah database MongoDB, pilih objek pada tingkat koleksi. Jika sumbernya adalah instans Tair/Redis, pilih objek pada tingkat Redis DB. Untuk jenis database lainnya, pilih objek pada tingkat tabel.

  2. Klik kanan objek tujuan.

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

    • Jika database sumber adalah Instans Tair/Redis, konfigurasikan parameter Prefixes of Keys to Be Synchronized (daftar putih) atau Prefixes of Keys to Be Filtered Out (blacklist) di kotak dialog Edit Schema.

    • Jika sumbernya adalah database MongoDB, tentukan Filter Conditions pada kotak dialog Edit Table.

    • Jika sumbernya adalah jenis database lainnya, masukkan nilai pada kotak teks Filter Conditions dalam kotak dialog Edit Table.

    Catatan

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

  4. Setelah menyelesaikan pengaturan, klik OK.

  5. Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.

Tetapkan untuk beberapa objek 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 dialog Select Objects, pilih objek yang ingin Anda edit.

    Catatan

    Pertahankan nilai default untuk Select Type.

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

    Catatan

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

  5. Pilih Select Edit Mode.

    • Add: Mempertahankan kondisi filter yang ada dan menambahkan kondisi baru.

    • Overwrite: Menghapus kondisi filter yang ada dan menggunakan kondisi baru.

  6. Tetapkan kondisi filter.

    • Jika sumbernya adalah instans Tair/Redis: Berdasarkan kebutuhan bisnis Anda, pilih Prefixes of Keys to Be Synchronized atau Prefixes of Keys to Be Filtered Out, lalu masukkan awalan yang sesuai.

    • Jika sumbernya adalah database MongoDB: Masukkan kondisi filter pada kotak teks.

    • Jika sumbernya adalah jenis database lainnya: Masukkan kondisi filter pada kotak teks.

    Catatan

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

  7. Setelah menyelesaikan pengaturan, klik OK.

  8. Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.

Contoh pernyataan

Instans sumber: Tair/Redis

Jenis filter

Contoh pernyataan

Deskripsi

Sinkronkan satu awalan

Tetapkan Prefixes of Keys to Be Synchronized menjadi dtsnew.

Hanya menyinkronkan data yang kuncinya diawali dengan dtsnew dari objek sumber ke database tujuan.

Filter satu awalan

Tetapkan Prefixes of Keys to Be Filtered Out menjadi dtstest.

Memfilter data yang kuncinya diawali dengan dtstest dari objek sumber dan menyinkronkan data sisanya ke database tujuan.

Sinkronkan beberapa awalan

Tetapkan Prefixes of Keys to Be Synchronized menjadi dtsnew,dtsold.

Hanya menyinkronkan data yang kuncinya diawali dengan dtsnew atau dtsold dari objek sumber ke database tujuan.

Gunakan sinkronisasi dan pemfilteran bersamaan

Tetapkan Prefixes of Keys to Be Synchronized menjadi dts.

Tetapkan Prefixes of Keys to Be Filtered Out menjadi dtstest.

Hanya menyinkronkan data yang kuncinya diawali dengan dts tetapi bukan dtstest dari objek sumber ke database tujuan.

Database sumber: MongoDB

Jenis filter

Contoh pernyataan

Deskripsi

Lainnya

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

Memfilter data berdasarkan ID pengguna. Pada contoh ini, $gt berarti lebih besar dari, dan $lte berarti kurang dari atau sama dengan. Pernyataan yang didukung untuk kondisi filter MongoDB berbeda dari pernyataan WHERE SQL standar. Untuk informasi selengkapnya, lihat Query and Projection Operators dan SQL to MongoDB Mapping Chart.

Sumber database lainnya

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

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

Contoh pernyataan

Jenis filter

Contoh pernyataan

Deskripsi

Nilai numerik

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

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

String

address in('hangzhou','shanghai')

Hanya menyinkronkan atau memigrasikan data di mana nilai bidang address adalah hangzhou atau shanghai.

Waktu

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

Hanya menyinkronkan atau memigrasikan data yang dibuat setelah tahun 2020.

Penting
  • Anda tidak dapat memasukkan create_time>'2020'.

  • DTS menggunakan zona waktu GMT+8 untuk memfilter data bertipe waktu. Jika data waktu Anda mencakup informasi zona waktu, Anda harus terlebih dahulu mengonversi waktu dalam kondisi filter ke zona waktu GMT+8. Kemudian, masukkan waktu yang telah dikonversi tersebut ke dalam bidang Filter Conditions.

Langkah selanjutnya

  • Lihat pernyataan filter

    • Jika tugas belum dikonfigurasi: Buka langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek tugas. Lalu, klik kanan objek tujuan untuk melihat Filter Conditions.

    • Jika tugas sudah dikonfigurasi dan sedang berjalan: Gunakan fitur Create Similar Task atau Modify Synchronization Objects untuk membuka langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek tugas. Lalu, klik kanan objek tujuan untuk melihat Filter Conditions. Setelah melihat kondisinya, Anda dapat membatalkan tugas tanpa melanjutkan proses. Untuk informasi selengkapnya, lihat Create a similar task dan Modify the objects to be synchronized.

  • Ubah pernyataan filter

    • Jika tugas belum dikonfigurasi: Buka langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek tugas. Lalu, klik kanan objek tujuan dan ubah Filter Conditions.

    • Tugas sudah dikonfigurasi dan sedang berjalan:

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

      • Tugas sinkronisasi: Gunakan fitur Modify Synchronization Objects untuk membuka langkah Configure Objects and Advanced Settings. Di kotak Selected Objects, perluas objek untuk tugas sinkronisasi. Lalu, klik kanan objek tujuan, ubah Filter Conditions, dan ikuti petunjuk untuk menyelesaikan konfigurasi tugas. Untuk informasi selengkapnya, lihat Modify the objects to be synchronized.

Kesalahan umum

Jika Anda memasukkan kondisi filter yang salah, tugas mungkin melaporkan kesalahan. Perbaiki kesalahan tersebut berdasarkan pesan kesalahan dan informasi dalam bagian Langkah selanjutnya.

Catatan

Ekspresi reguler ((.*)?) dalam pesan kesalahan menunjukkan variabel.

Kode kesalahan

Pesan kesalahan

Deskripsi

DTS-RETRY-ERR-0070

Dalam proses pemrosesan data (.*)? gagal (.*)? Kesalahan sintaks dalam pernyataan SQL

Format kondisi filter untuk objek sinkronisasi salah.

DTS-RETRY-ERR-0145

Kolom tidak dikenal (.*)? dalam

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

DTS-RETRY-ERR-0147

Ada kesalahan dalam sintaks SQL Anda

Kondisi filter untuk konfigurasi pekerjaan saat ini mereferensikan bidang yang tidak ada di database sumber.

DTS-RETRY-ERR-0188

nilai null dalam kolom (.*)? melanggar kendala not-null

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

DTS-RETRY-ERR-0276

jika (.*)? ditentukan, nilainya tidak boleh kosong

Nilai yang dipetakan ke kolom _id di Elasticsearch kosong. Anda harus memfilter data yang memiliki nilai kosong untuk kolom ini.

FAQ

  • Mengapa kondisi filter tidak berlaku?

    Pernyataan kondisi filter tidak valid. Atau, jika sumbernya adalah database MongoDB, kondisi filter tidak didukung untuk tugas inkremental.

  • Setelah saya mengubah kondisi filter, apa cakupan perubahannya?

    • Jika tugas belum dikonfigurasi: Untuk sumber MongoDB, kondisi hanya berlaku selama fase tugas penuh. Untuk sumber database lainnya, kondisi berlaku selama fase tugas penuh maupun inkremental.

    • Jika tugas sudah dikonfigurasi dan sedang berjalan: Untuk sumber MongoDB, kondisi tidak berlaku. Untuk sumber database lainnya, kondisi hanya berlaku pada data inkremental.

  • Apakah saya dapat menetapkan kondisi filter secara batch?

    Tidak, Anda tidak dapat. Anda harus menetapkan kondisi filter untuk setiap objek tujuan secara terpisah.

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

    • Jika sumbernya adalah instans Tair/Redis: Ya, Anda dapat. Anda dapat memasukkan nilai untuk Prefixes of Keys to Be Filtered Out untuk memfilter kunci yang memenuhi kondisi tersebut.

    • Jika sumbernya adalah jenis database lainnya: Tidak, Anda tidak dapat. Anda dapat mencoba menetapkan kondisi filter kebalikannya untuk memenuhi kebutuhan Anda. Misalnya, untuk memfilter data di mana nilai bidang age adalah 25, Anda dapat memasukkan age > 25 or age < 25 pada bidang Filter Conditions.

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

    Gunakan koma (,) untuk memisahkan kunci-kuncinya.

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

    Ya, Anda dapat. Aturan untuk sinkronisasi dan pemfilteran keduanya berlaku.

  • Apakah panggilan API didukung dalam kondisi filter?

    Tidak didukung.

Operasi API terkait

Operasi API

Deskripsi

ConfigureDtsJob

Mengonfigurasi tugas migrasi atau sinkronisasi DTS. Tetapkan parameter Dblist dan konfigurasikan parameter filter untuk menetapkan kondisi filter.