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.
PentingUntuk instans DTS dengan database sumber SQL Server, logika filtering ini tidak berlaku jika bidang yang difilter bukan kolom indeks terkluster.
Prosedur
Metode penetapan kondisi filter berbeda-beda tergantung jenis database sumber, seperti Tair/Redis, MongoDB, dan jenis database lainnya.
Pengaturan individual
Pada langkah Configure Objects, pindahkan objek tugas ke kotak Selected Objects.
CatatanUntuk 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.
Klik kanan objek target.
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.
CatatanUntuk informasi lebih lanjut tentang sintaksis kondisi filter, lihat Contoh pernyataan.
Setelah selesai mengonfigurasi pengaturan, klik OK.
Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.
Tetapkan kondisi 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 Select Objects, pilih objek yang akan dikonfigurasi dengan kondisi filter berbasis awalan.
CatatanAnda dapat mempertahankan nilai default untuk Select Type.
Pada area Select Editing Type, klik tab Filter Conditions.
CatatanJika database sumber adalah Tair/Redis, klik tab Prefixes of Keys to Be Synchronized/Filtered Out.
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.
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.
CatatanUntuk informasi lebih lanjut tentang sintaksis kondisi filter, lihat Contoh pernyataan.
Setelah selesai mengonfigurasi pengaturan, klik OK.
Ikuti petunjuk untuk menyelesaikan konfigurasi tugas.
Contoh pernyataan
Database sumber adalah Tair/Redis
Jenis filter | Contoh pernyataan | Deskripsi |
Sinkronisasi satu awalan | Masukkan | Hanya menyinkronisasi data yang kuncinya diawali dengan |
Filter berdasarkan satu awalan | Masukkan | Memfilter data yang kuncinya diawali dengan |
Sinkronisasi beberapa awalan | Masukkan | Hanya menyinkronisasi data yang kuncinya diawali dengan |
Gunakan sinkronisasi dan filtering bersamaan | Masukkan Untuk Prefixes of Keys to Be Filtered Out, masukkan | Hanya menyinkronisasi data yang kuncinya diawali dengan |
Database sumber adalah MongoDB
Jenis filter | Contoh pernyataan | Deskripsi |
Lainnya |
| Memfilter berdasarkan ID pengguna, di mana |
Database sumber adalah jenis lainnya
Filter Conditions mendukung operator berikut:
=,!=,<,>, danin.Jika Anda memiliki pertanyaan saat memasukkan kondisi filter, lihat FAQ.
Contoh pernyataan
Jenis filter | Contoh pernyataan | Deskripsi |
Numerik |
| Hanya menyinkronisasi atau memigrasikan data di mana bidang |
String |
| Hanya menyinkronisasi atau memigrasikan data di mana bidang |
Waktu |
| Hanya menyinkronisasi atau memigrasikan data yang dibuat setelah tahun 2020. Penting
|
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.
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 |
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
agebernilai 25, Anda dapat memasukkanage > 25 or age < 25di 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 |
Mengonfigurasi tugas migrasi atau sinkronisasi DTS. Di |