Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan ekspresi aturan transformasi untuk menentukan isi kolom
Untuk menentukan konten untuk kolom baru dan yang sudah ada, Anda dapat menggunakan ekspresi dalam aturan transformasi. Misalnya, menggunakan ekspresi Anda dapat menambahkan kolom atau mereplikasi header tabel sumber ke target. Anda juga dapat menggunakan ekspresi untuk menandai catatan pada tabel target sebagai dimasukkan, diperbarui, atau dihapus pada sumber.
Topik
Menambahkan kolom menggunakan ekspresi
Untuk menambahkan kolom ke tabel menggunakan ekspresi dalam aturan transformasi, gunakanadd-column
aturan tindakan dancolumn
Target aturan.
Contoh berikut menambahkan kolom baru keITEM
Tabel. Ini menetapkan nama kolom baru untukFULL_NAME
, dengan tipe datastring
, 50 karakter panjang. Ekspresi menggabungkan nilai-nilai dari dua kolom yang ada,FIRST_NAME
danLAST_NAME
, untuk mengevaluasiFULL_NAME
. Parameterschema-name
,table-name
, dan parameter ekspresi mengacu pada objek dalam tabel database sumber.Value
dandata-type
mengacu pada obyek dalam tabel basisdata target.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "Test", "table-name": "ITEM" }, "value": "FULL_NAME", "expression": "$FIRST_NAME||'_'||$LAST_NAME", "data-type": { "type": "string", "length": 50 } } ] }
Menandai catatan target menggunakan ekspresi
Untuk menandai catatan dalam tabel target sebagai dimasukkan, diperbarui, atau dihapus dalam tabel sumber, menggunakan ekspresi dalam aturan transformasi. Ekspresi menggunakanoperation_indicator
fungsi untuk menandai catatan. Rekaman yang dihapus dari sumber tidak dihapus dari target. Sebaliknya, data target ditandai dengan nilai yang disediakan pengguna untuk menunjukkan bahwa itu telah dihapus dari sumber.
catatan
operation_indicator
Fungsi ini hanya berfungsi pada tabel yang memiliki kunci utama pada basis data sumber dan target.
Sebagai contoh, aturan transformasi berikut pertama menambahkan baruOperation
kolom ke tabel target. Kemudian update kolom dengan nilaiD
setiap kali catatan dihapus dari tabel sumber.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "Operation", "expression": "operation_indicator('D', 'U', 'I')", "data-type": { "type": "string", "length": 50 } }
Replikasi header tabel sumber menggunakan ekspresi
Secara default, header untuk tabel sumber tidak direplikasi ke target. Untuk menunjukkan header untuk mereplikasi, menggunakan aturan transformasi dengan ekspresi yang mencakup header kolom tabel.
Anda dapat menggunakan header kolom berikut dalam ekspresi.
Header | Nilai dalam replikasi yang sedang berlangsung | Nilai dalam beban penuh | Tipe Data |
---|---|---|---|
AR_H_STREAM_POSITION | Nilai posisi aliran dari sumber. Nilai ini mungkin nomor perubahan sistem (SCN) atau nomor urutan log (LSN), tergantung pada titik akhir sumber. | String kosong. | STRING |
AR_H_TIMESTAMP | Sebuah timestamp yang menunjukkan waktu perubahan. | Sebuah timestamp menunjukkan data waktu saat ini tiba di target. | DATETIME (skala = 7) |
AR_H_COMMIT_TIMESTAMP | Sebuah timestamp menunjukkan waktu komit. | Sebuah timestamp menunjukkan waktu saat ini. | DATETIME (skala = 7) |
AR_H_OPERATION | INSERT, UPDATE | SISIPAN | STRING |
PENGGUNA | Nama pengguna, ID, atau informasi lain yang sumber menyediakan tentang pengguna yang membuat perubahan. Header ini didukung pada SQL Server dan Oracle (versi 11.2.0.3 dan lebih tinggi) sumber endpoint hanya. |
Transformasi yang ingin Anda terapkan ke objek. Tindakan aturan transformasi peka huruf besar kecil. | STRING |
AR_H_CHANGE_SEQ | Nomor incrementing unik dari database sumber yang terdiri dari timestamp dan nomor auto incrementing. Nilai tergantung pada sistem database sumber. | String kosong. | STRING |
Contoh berikut menambahkan kolom baru ke target dengan menggunakan nilai posisi aliran dari sumber. Untuk SQL Server, nilai posisi aliran adalah LSN untuk titik akhir sumber. Untuk Oracle, nilai posisi aliran adalah SCN untuk titik akhir sumber.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_STREAM_POSITION", "data-type": { "type": "string", "length": 50 } }
Contoh berikut menambahkan kolom baru ke target yang memiliki nomor incrementing unik dari sumber. Nilai ini mewakili 35 digit nomor unik di tingkat tugas. 16 digit pertama adalah bagian dari timestamp, dan 19 digit terakhir adalah jumlah record_id bertambah oleh DBMS.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_CHANGE_SEQ", "data-type": { "type": "string", "length": 50 } }
Menggunakan fungsi SQLite untuk membangun ekspresi
Anda menggunakan pengaturan tabel untuk menentukan pengaturan yang ingin Anda terapkan ke tabel yang dipilih atau tampilan untuk operasi tertentu. Aturan pengaturan meja bersifat opsional.
catatan
Alih-alih konsep tabel dan pandangan, MongoDB dan database DocumentDB menyimpan catatan data sebagai dokumen yang berkumpul bersama-sama diKoleksi. Jadi kemudian, ketika bermigrasi dari MongoDB atau sumber DocumentDB, mempertimbangkan jenis rentang segmentasi pengaturan beban paralel untuk dipilihKoleksibukan tabel dan pandangan.
Berikut ini, Anda dapat menemukan fungsi string yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.
Fungsi string | Deskripsi |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Jika |
trim( |
|
Berikut ini, Anda dapat menemukan fungsi LOB yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.
Fungsi LOB | Deskripsi |
---|---|
|
|
|
|
|
|
Berikut ini, Anda dapat menemukan fungsi numerik yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.
Fungsi numerik | Deskripsi |
---|---|
|
|
|
|
|
|
|
|
|
|
Berikut ini, Anda dapat menemukan fungsi pemeriksaan NULL yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.
Fungsi pemeriksaan NULL | Deskripsi |
---|---|
|
|
|
|
|
|
Berikut ini, Anda dapat menemukan fungsi tanggal dan waktu yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.
Fungsi tanggal dan waktu | Deskripsi |
---|---|
|
|
|
|
|
|
|
|
|
|
Berikut ini, Anda dapat menemukan fungsi hash yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.
Fungsi hash | Deskripsi |
---|---|
|
Untuk menggunakan |
Menggunakan ekspresi CASE
CASE
Ekspresi SQLite mengevaluasi daftar kondisi dan mengembalikan ekspresi berdasarkan hasil. Sintaks ditampilkan sebagai berikut.
CASE case_expression WHEN when_expression_1 THEN result_1 WHEN when_expression_2 THEN result_2 ... [ ELSE result_else ] END # Or CASE WHEN case_expression THEN result_1 WHEN case_expression THEN result_2 ... [ ELSE result_else ] END
Contoh
contoh menambahkan kolom string baru ke tabel target menggunakan kondisi kasus
Contoh aturan transformasi berikut menambahkan kolom string baru,emp_seniority
, ke tabel target,employee
. Ini menggunakan round
fungsi SQLite pada kolom gaji, dengan kondisi kasus untuk memeriksa apakah gaji sama atau melebihi 20.000. Jika ya, kolom mendapatkan nilaiSENIOR
, dan hal lain memiliki nilaiJUNIOR
.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "emp_seniority", "expression": " CASE WHEN round($emp_salary)>=20000 THEN ‘SENIOR’ ELSE ‘JUNIOR’ END", "data-type": { "type": "string", "length": 50 } }
contoh menambahkan kolom tanggal baru ke tabel target
Contoh berikut menambahkan kolom tanggal baru,createdate
, ke tabel target,employee
. Saat Anda menggunakan fungsi tanggal SQLitedatetime
, tanggal ditambahkan ke tabel yang baru dibuat untuk setiap baris yang disisipkan.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "createdate", "expression": "datetime ()", "data-type": { "type": "datetime", "precision": 6 } }
contoh menambahkan kolom numerik baru ke tabel target
Contoh berikut menambahkan kolom numerik baru,rounded_emp_salary
, ke tabel target,employee
. Ini menggunakan round
fungsi SQLite untuk menambahkan gaji bulat.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "rounded_emp_salary", "expression": "round($emp_salary)", "data-type": { "type": "int8" } }
contoh menambahkan kolom string baru ke tabel target menggunakan fungsi hash
Contoh berikut menambahkan kolom string baru,hashed_emp_number
, ke tabel target,employee
. hash_sha256(
Fungsi SQLite menciptakan nilai hash pada target untuk kolom sumber,. x
)emp_number
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "hashed_emp_number", "expression": "hash_sha256($emp_number)", "data-type": { "type": "string", "length": 64 } }
Menambahkan metadata ke tabel target menggunakan ekspresi
Anda dapat menambahkan informasi metadata ke tabel target dengan menggunakan ekspresi berikut:
-
$AR_M_SOURCE_SCHEMA
— Nama skema sumber. -
$AR_M_SOURCE_TABLE_NAME
— Nama tabel sumber. -
$AR_M_SOURCE_COLUMN_NAME
— Nama kolom di tabel sumber. -
$AR_M_SOURCE_COLUMN_DATATYPE
— Tipe data kolom dalam tabel sumber.
contoh menambahkan kolom untuk nama skema menggunakan nama skema dari sumber
Contoh berikut menambahkan kolom baru bernama schema_name
target dengan menggunakan nama skema dari sumber.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value":"schema_name", "expression": "$AR_M_SOURCE_SCHEMA", "data-type": { "type": "string", "length": 50 } }