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.
PentingUntuk instans DTS yang bersumber dari database SQL Server, logika pemfilteran ini tidak berlaku jika bidang yang difilter bukan kolom indeks terkluster.
Prosedur
Metode penetapan kondisi filter bergantung pada jenis database sumber: Tair/Redis, MongoDB, atau jenis database lainnya.
Tetapkan untuk satu objek
Pada langkah Configure Objects, pindahkan objek tugas ke kotak Selected Objects.
CatatanJika 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.
Klik kanan objek tujuan.
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.
CatatanUntuk informasi lebih lanjut tentang sintaks kondisi filter, lihat Contoh pernyataan.
Setelah menyelesaikan pengaturan, klik OK.
Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.
Tetapkan untuk beberapa objek secara batch
Pada langkah Configure Objects, pindahkan objek tugas ke kotak Selected Objects.
Di pojok kanan atas area Selected Objects, klik Batch Edit.
Pada kotak dialog Select Objects, pilih objek yang ingin Anda edit.
CatatanPertahankan nilai default untuk Select Type.
Pada area Select Editing Type, klik tab Filter Conditions.
CatatanJika sumbernya adalah instans Tair/Redis, klik tab Prefixes of Keys to Be Synchronized/Filtered Out.
Pilih Select Edit Mode.
Add: Mempertahankan kondisi filter yang ada dan menambahkan kondisi baru.
Overwrite: Menghapus kondisi filter yang ada dan menggunakan kondisi baru.
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.
CatatanUntuk informasi lebih lanjut tentang sintaks kondisi filter, lihat Contoh pernyataan.
Setelah menyelesaikan pengaturan, klik OK.
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 | Hanya menyinkronkan data yang kuncinya diawali dengan |
Filter satu awalan | Tetapkan Prefixes of Keys to Be Filtered Out menjadi | Memfilter data yang kuncinya diawali dengan |
Sinkronkan beberapa awalan | Tetapkan Prefixes of Keys to Be Synchronized menjadi | Hanya menyinkronkan data yang kuncinya diawali dengan |
Gunakan sinkronisasi dan pemfilteran bersamaan | Tetapkan Prefixes of Keys to Be Synchronized menjadi Tetapkan Prefixes of Keys to Be Filtered Out menjadi | Hanya menyinkronkan data yang kuncinya diawali dengan |
Database sumber: MongoDB
Jenis filter | Contoh pernyataan | Deskripsi |
Lainnya |
| Memfilter data berdasarkan ID pengguna. Pada contoh ini, |
Sumber database lainnya
Bidang Filter Conditions mendukung operator berikut:
=,!=,<,>, danin.Jika Anda memiliki pertanyaan saat memasukkan kondisi filter, Anda dapat memeriksa FAQ.
Contoh pernyataan
Jenis filter | Contoh pernyataan | Deskripsi |
Nilai numerik |
| Hanya menyinkronkan atau memigrasikan data di mana nilai bidang |
String |
| Hanya menyinkronkan atau memigrasikan data di mana nilai bidang |
Waktu |
| Hanya menyinkronkan atau memigrasikan data yang dibuat setelah tahun 2020. Penting
|
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.
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 |
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
ageadalah 25, Anda dapat memasukkanage > 25 or age < 25pada 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 |
Mengonfigurasi tugas migrasi atau sinkronisasi DTS. Tetapkan parameter |