Saat membuat tugas sinkronisasi data atau migrasi di Data Transmission Service (DTS), Anda dapat menambahkan kolom tambahan ke tabel tujuan dan memberikan nilai untuk kolom tersebut. Setelah data ditulis ke tabel tujuan, Anda dapat memfilter berdasarkan nilai dalam kolom tambahan ini, sehingga memungkinkan operasi seperti manajemen metadata, pengurutan, dan penghapusan duplikat. Hal ini membantu Anda mengelola dan memproses data yang ditransfer ke tujuan dengan lebih baik.
Catatan
Anda dapat menambahkan kolom tambahan ke instans sinkronisasi atau migrasi dalam skenario berikut:
Database Type untuk database tujuan adalah DataHub, Lindorm, Kafka, atau ClickHouse.
Database Type untuk database sumber adalah DB2 for LUW atau DB2 for iSeries (AS/400), dan Database Type untuk database tujuan adalah MySQL atau PolarDB for MySQL.
Database Type database sumber adalah MySQL, MariaDB, atau PolarDB for MySQL, dan Database Type database tujuan adalah MySQL, MariaDB, atau PolarDB for MySQL.
Database Type database sumber adalah MySQL, dan Database Type database tujuan adalah Tair/Redis, AnalyticDB for PostgreSQL, atau AnalyticDB for MySQL 3.0.
Database Type untuk database sumber adalah PolarDB for PostgreSQL, dan Database Type untuk database tujuan adalah AnalyticDB for PostgreSQL.
Database Type untuk database sumber adalah SQL Server, dan Database Type untuk database tujuan adalah MySQL.
Untuk instans sinkronisasi, atur Synchronization Types ke Schema Synchronization. Untuk instans migrasi, atur Migration Types ke Schema Migration.
Sebelum mengubah aturan untuk kolom tambahan dalam tugas sinkronisasi data, pastikan nama kolom tambahan tidak bertentangan dengan kolom yang sudah ada di tabel tujuan.
Jika database sumber dari tugas sinkronisasi adalah MongoDB, koleksi di database tujuan tidak boleh berisi bidang bernama _id atau _value. Jika tidak, sinkronisasi akan gagal.
Jika Anda mengklik kanan database di bagian Selected Objects, DTS akan menambahkan kolom tambahan yang dikonfigurasi ke semua tabel dalam database tujuan yang sesuai.
Prosedur
Bagian ini menggunakan contoh instans sinkronisasi DTS untuk menjelaskan cara menambahkan kolom tambahan.
Buka halaman Tugas Sinkronisasi Data.
Masuk ke Data Management (DMS) console.
Di bilah navigasi atas, klik Data + AI.
Di panel navigasi sebelah kiri, pilih .
CatatanOperasi dapat berbeda tergantung pada mode dan tata letak konsol DMS. Untuk informasi selengkapnya, lihat Simple mode console dan Customize the layout and style of the DMS console.
Anda juga dapat masuk ke atau halaman Tugas Sinkronisasi Data di konsol DTS baru.
Klik Create Task dan konfigurasikan database sumber dan tujuan.
CatatanKlik Reselect Objects untuk menambahkan kolom tambahan ke instans sinkronisasi yang sedang Running.
Ikuti petunjuk hingga langkah Configure Objects untuk menyelesaikan konfigurasi.
Anda dapat menambahkan kolom tambahan pada langkah ini.
Atur Synchronization Types ke Schema Synchronization.
Di bagian Source Objects, pilih database atau tabel yang ingin disinkronkan, lalu klik
untuk memindahkannya ke kotak Selected Objects.Di bagian Selected Objects, klik kanan database atau tabel yang ingin disinkronkan.
Di bagian Additional Columns pada dialog, klik tombol Add Column.
Masukkan Column Name, Type, dan Assign Value untuk kolom tambahan tersebut.
CatatanUntuk Assign Value, Anda dapat mengklik ikon
di sebelah kanan kotak teks untuk menyesuaikan ekspresi nilai kolom tambahan. Untuk informasi selengkapnya, lihat Assignment configuration.Klik OK.
Ikuti petunjuk untuk menyelesaikan konfigurasi tugas sinkronisasi data lainnya.
CatatanJika fitur extract, transform, and load (ETL) dikonfigurasi untuk tugas sinkronisasi, data yang akan disinkronkan pertama-tama diproses oleh aturan kolom tambahan untuk menghasilkan nilai. Kemudian, skrip ETL diterapkan untuk menghitung nilai akhir, yang kemudian disinkronkan ke database tujuan.
Konfigurasi Penugasan
Nilai kolom tambahan terdiri dari konstanta, variabel, operator, dan fungsi ekspresi.
Sintaks kompatibel dengan DSL (Domain-Specific Language) pemrosesan data untuk ETL.
Dalam ekspresi, nama kolom diapit tanda backtick (` `), bukan tanda kutip tunggal (' ').
Konstanta
Type
Contoh
int
123
float
123.4
string
"hello1_world"
boolean
true or false
datetime
DATETIME('2021-01-01 10:10:01')
Variabel
Variabel
Deskripsi
Tipe data
Contoh nilai
__TB__
Nama tabel di database.
string
table
__DB__
Nama database.
string
mydb
__OPERATION__
Jenis operasi.
string
__OP_INSERT__,__OP_UPDATE__,__OP_DELETE__
__COMMIT_TIMESTAMP__
Waktu saat transaksi dikomit.
datetime
'2021-01-01 10:10:01'
`column`
Nilai kolom untuk catatan data.
string
`id`, `name`
__SCN__
System Change Number (SCN). Mencatat versi dan waktu komit transaksi di database dan bersifat unik.
string
22509****
__ROW_ID__
CatatanMySQL tidak mendukung __ROW_ID__.
ID alamat catatan data. Menentukan lokasi data dan bersifat unik.
string
AAAgWHAAKAAJgX****
Fungsi ekspresi
Operasi numerik
Fungsi
Sintaks
Rentang nilai
Nilai kembali
Contoh
Penjumlahan (+)
op_sum(value1, value2)
value1+value2
value1: integer atau bilangan titik mengambang
value2: integer atau bilangan titik mengambang
Jika kedua parameter berupa integer, maka dikembalikan integer. Jika tidak, dikembalikan bilangan titik mengambang.
op_sum(`col1`, 1.0)
`col1`+1.0
Pengurangan (-)
op_sub(value1, value2)
value1-value2
value1: integer atau bilangan titik mengambang
value2: integer atau bilangan titik mengambang
Jika kedua parameter berupa integer, maka dikembalikan integer. Jika tidak, dikembalikan bilangan titik mengambang.
op_sub(`col1`, 1.0)
`col1`-1.0
Perkalian (*)
op_mul(value1, value2)
value1*value2
value1: integer atau bilangan titik mengambang
value2: integer atau bilangan titik mengambang
Jika kedua parameter berupa integer, maka dikembalikan integer. Jika tidak, dikembalikan bilangan titik mengambang.
op_mul(`col1`, 1.0)
`col1`*1.0
Pembagian (/)
op_div_true(value1, value2)
value1/value2
value1: integer atau bilangan titik mengambang
value2: integer atau bilangan titik mengambang
Jika kedua parameter berupa integer, maka dikembalikan integer. Jika tidak, dikembalikan bilangan titik mengambang.
op_div_true(`col1`, 2.0). Jika col1=15, dikembalikan 7.5.
`col1`/1.0
Operasi modulo
op_mod(value1, value2)
value1: integer atau bilangan titik mengambang
value2: integer atau bilangan titik mengambang
Jika kedua parameter berupa integer, maka dikembalikan integer. Jika tidak, dikembalikan bilangan titik mengambang.
op_mod(`col1`, 10). Jika col1=23, dikembalikan 3.
Operasi logika
Fitur
Sintaks
Rentang nilai
Nilai kembali
Contoh
Sama dengan
op_eq(value1, value2)
value1: integer, bilangan titik mengambang, atau string
value2: integer, bilangan titik mengambang, atau string
boolean: true atau false
op_eq(`col1`, 23)
Lebih besar dari
op_gt(value1, value2)
value1: integer, bilangan titik mengambang, atau string
value2: integer, bilangan titik mengambang, atau string
boolean: true atau false
op_gt(`col1`, 1.0)
Lebih kecil dari
op_lt(value1, value2)
value1: integer, bilangan titik mengambang, atau string
value2: integer, bilangan titik mengambang, atau string
boolean: true atau false
op_lt(`col1`, 1.0)
Lebih besar dari atau sama dengan
op_ge(value1, value2)
value1: integer, bilangan titik mengambang, atau string
value2: integer, bilangan titik mengambang, atau string
boolean: true atau false
op_ge(`col1`, 1.0)
Lebih kecil dari atau sama dengan
op_le(value1, value2)
value1: integer, bilangan titik mengambang, atau string
value2: integer, bilangan titik mengambang, atau string
boolean: true atau false
op_le(`col1`, 1.0)
Operasi AND
op_and(value1, value2)
value1: boolean
value2: boolean
boolean: true atau false
op_and(`is_male`, `is_student`)
Operasi OR
op_or(value1, value2)
value1: boolean
value2: boolean
boolean: true atau false
op_or(`is_male`, `is_student`)
Operasi IN
op_in(value, json_array)
value: tipe apa pun
json_array: string dalam format JSON
boolean: true atau false
op_in(`id`,json_array('["0","1","2","3","4","5","6","7","8"]'))
Apakah null
op_is_null(value)
value: tipe apa pun
boolean: true atau false
op_is_null(`name`)
Bukan null
op_is_not_null(value)
value: tipe apa pun
boolean: true atau false
op_is_not_null(`name`)
Fungsi string
Fitur
Sintaks
Rentang nilai
Nilai kembali
Contoh
Penggabungan string
op_add(str_1,str_2,...,str_n)
str_1: string
str_2: string
...
str_n: string
String hasil gabungan
op_add(`col`,'hangzhou','dts')
Pemformatan dan penggabungan string
str_format(format, value1, value2, value3, ...)
format: string yang menggunakan kurung kurawal ({}) sebagai placeholder, misalnya "part1: {}, part2: {}".
value1: tipe apa pun
value2: tipe apa pun
String terformat
str_format("part1: {}, part2: {}", `col1`, `col2`). Jika col1="ab" dan col2="12", dikembalikan "part1: ab, part2: 12".
Penggantian string
str_replace(original, oldStr, newStr, count)
original: string asli
oldStr: string yang akan diganti
newStr: string pengganti
count: integer yang menentukan jumlah maksimum penggantian. Jika parameter ini diatur ke -1, semua kemunculan akan diganti.
String setelah penggantian
str_replace(`name`, "a", 'b', 1). Jika name="aba", dikembalikan "bba". str_replace(`name`, "a", 'b', -1). Jika name="aba", dikembalikan "bbb".
Ganti nilai di semua bidang bertipe string (seperti varchar, text, dan char)
tail_replace_string_field(search, replace, all)
search: string yang akan diganti
replace: string pengganti
all: menentukan apakah akan mengganti semua string yang cocok. Parameter ini hanya mendukung true.
CatatanJika Anda tidak perlu mengganti semua string yang cocok, gunakan fungsi
str_replace.
String setelah penggantian
tail_replace_string_field('\u000f','',true). Mengganti "\u000f" dengan spasi di nilai semua bidang bertipe string.
Hapus karakter tertentu dari awal dan akhir string
str_strip(string_val, charSet)
string_val: string asli
char_set: kumpulan karakter yang akan dihapus
String setelah karakter di awal dan akhir dihapus
str_strip(`name`, 'ab'). Jika name=axbzb, dikembalikan xbz.
Konversi string ke huruf kecil
str_lower(value)
value: kolom string atau konstanta string
String huruf kecil
str_lower(`str_col`)
Konversi string ke huruf besar
str_upper(value)
value: kolom string atau konstanta string
String huruf besar
str_upper(`str_col`)
Konversi string ke angka
cast_string_to_long(value)
value: string
Integer
cast_string_to_long(`col`)
Konversi angka ke string
cast_long_to_string(value)
value: integer
String
cast_long_to_string(`col`)
Hitung kemunculan substring
str_count(str,pattern)
str: kolom string atau konstanta string
pattern: substring yang dicari
Jumlah kemunculan substring
str_count(`str_col`, 'abc'). Jika str_col="zabcyabcz", dikembalikan 2.
Cari substring
str_find(str, pattern)
str: kolom string atau konstanta string
pattern: substring yang dicari
Posisi kecocokan pertama substring. Jika tidak ditemukan, dikembalikan `-1`.
str_find(`str_col`, 'abc'). Jika `str_col="xabcy"`, dikembalikan `1`.
Periksa apakah string hanya terdiri dari huruf
str_isalpha(str)
str: kolom string atau konstanta string
true atau false
str_isalpha(`str_col`)
Periksa apakah string hanya terdiri dari angka
str_isdigit(str)
str: kolom string atau konstanta string
true atau false
str_isdigit(`str_col`)
Pencocokan ekspresi reguler
regex_match(str,regex)
str: kolom string atau konstanta string
regex: kolom string ekspresi reguler atau konstanta string
true atau false
regex_match(__TB__,'user_\\d+')
Samarkan bagian string dengan karakter tertentu. Ini dapat digunakan untuk penyamaran data, seperti mengganti empat digit terakhir nomor telepon dengan tanda bintang.
str_mask(str, start, end, maskStr)
str: kolom string atau konstanta string
start: integer yang menentukan posisi awal penyamaran. Nilai minimum adalah 0.
end: integer yang menentukan posisi akhir penyamaran. Nilai maksimum adalah panjang string dikurangi 1.
maskStr: string dengan panjang 1, seperti '#'.
String setelah bagian dari posisi awal hingga posisi akhir disamarkan
str_mask(`phone`, 7, 10, '#')
Ambil substring setelah string tertentu
substring_after(str, cond)
str: string asli
cond: string
String
CatatanNilai kembali tidak termasuk string cond.
substring_after(`col`, 'abc')
Ambil substring sebelum string tertentu
substring_before(str, cond)
str: string asli
cond: string
String
CatatanNilai kembali tidak termasuk string cond.
substring_before(`col`, 'efg')
Ambil substring di antara dua string tertentu
substring_between(str, cond1, cond2)
str: string asli
cond1: string
cond2: string
String
CatatanNilai kembali tidak termasuk string cond1 dan cond2.
substring_between(`col`, 'abc','efg')
Periksa apakah nilai berupa string
is_string_value(value)
value: string atau nama kolom
boolean: true atau false
is_string_value(`col1`)
Ganti konten di bidang bertipe string, dimulai dari akhir secara terbalik.
tail_replace_string_field(search, replace, all)
search: string yang akan diganti
replace: string pengganti
all: menentukan apakah akan mengganti semua kemunculan. Nilainya bisa true atau false.
String setelah penggantian
Ganti "\u000f" dengan spasi di nilai semua bidang bertipe string.
tail_replace_string_field('\u000f','',true)
Ambil nilai bidang di MongoDB
bson_value("field1","field2","field3",...)
field1: nama bidang tingkat-1.
field2: nama bidang tingkat-2.
Nilai bidang yang sesuai dalam dokumen
e_set(`user_id`, bson_value("id"))
e_set(`user_name`, bson_value("person","name"))
Ekspresi kondisional
Fitur
Sintaks
Rentang nilai
Nilai kembali
Contoh
Menyerupai operator ternary (
? :) di C. Mengembalikan nilai berdasarkan kondisi.(cond ? val_1 : val_2)
cond: bidang boolean atau ekspresi
val_1: nilai kembali 1
val_2: nilai kembali 2
Catatanval_1 dan val_2 harus memiliki tipe yang sama.
Jika cond bernilai true, dikembalikan val_1. Jika tidak, dikembalikan val_2.
(id>1000? 1 : 0)
Fungsi waktu
Fitur
Sintaks
Rentang nilai
Nilai kembali
Contoh
Waktu sistem saat ini
dt_now()
Tidak ada
DATETIME, akurat hingga detik
dts_now()
dt_now_millis()
Tidak ada
DATETIME, akurat hingga milidetik
dt_now_millis()
Konversi timestamp UTC (dalam detik) ke DATETIME
dt_fromtimestamp(value,[timezone])
value: integer
timezone: zona waktu. Ini adalah parameter opsional.
DATETIME, akurat hingga detik
dt_fromtimestamp(1626837629)
dt_fromtimestamp(1626837629,'GMT+08')
Konversi timestamp UTC (dalam milidetik) ke DATETIME
dt_fromtimestamp_millis(value,[timezone])
value: integer
timezone: zona waktu. Ini adalah parameter opsional.
DATETIME, akurat hingga milidetik
dt_fromtimestamp_millis(1626837629123);
dt_fromtimestamp_millis(1626837629123,'GMT+08')
Konversi DATETIME ke timestamp UTC (dalam detik)
dt_parsetimestamp(value,[timezone])
value: DATETIME
timezone: zona waktu. Ini adalah parameter opsional.
Integer
dt_parsetimestamp(`datetime_col`)
dt_parsetimestamp(`datetime_col`,'GMT+08')
Konversi DATETIME ke timestamp UTC (dalam milidetik)
dt_parsetimestamp_millis(value,[timezone])
value: DATETIME
timezone: zona waktu. Ini adalah parameter opsional.
Integer
dt_parsetimestamp_millis(`datetime_col`)
dt_parsetimestamp_millis(`datetime_col`,'GMT+08')
Konversi DATETIME ke string
dt_str(value, format)
value: DATETIME
format: string dalam format yyyy-MM-dd HH:mm:ss
String
dt_str(`col1`, 'yyyy-MM-dd HH:mm:ss')
Konversi string ke DATETIME
dt_strptime(value,format)
value: string
format: string dalam format yyyy-MM-dd HH:mm:ss
DATETIME
dt_strptime('2021-07-21 03:20:29', 'yyyy-MM-dd hh:mm:ss')
Ubah waktu dengan menambahkan atau mengurangi nilai dari tahun, bulan, hari, jam, menit, atau detik
dt_add(value, [years=intVal],
[months=intVal],
[days=intVal],
[hours=intVal],
[minutes=intVal]
)
value: DATETIME
intVal: integer
CatatanTanda minus (-) menunjukkan pengurangan.
DATETIME
dt_add(datetime_col,years=-1)
dt_add(datetime_col,years=1,months=1)



