Menggunakan ekspresi aturan transformasi untuk menentukan isi kolom - AWS Layanan Migrasi Database

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.

Menambahkan kolom menggunakan ekspresi

Untuk menambahkan kolom ke tabel menggunakan ekspresi dalam aturan transformasi, gunakanadd-columnaturan tindakan dancolumnTarget aturan.

Contoh berikut menambahkan kolom baru keITEMTabel. Ini menetapkan nama kolom baru untukFULL_NAME, dengan tipe datastring, 50 karakter panjang. Ekspresi menggabungkan nilai-nilai dari dua kolom yang ada,FIRST_NAMEdanLAST_NAME, untuk mengevaluasiFULL_NAME. Parameterschema-name,table-name, dan parameter ekspresi mengacu pada objek dalam tabel database sumber.Valuedandata-typemengacu 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_indicatorfungsi 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_indicatorFungsi ini hanya berfungsi pada tabel yang memiliki kunci utama pada basis data sumber dan target.

Sebagai contoh, aturan transformasi berikut pertama menambahkan baruOperationkolom ke tabel target. Kemudian update kolom dengan nilaiDsetiap 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

lower(x)

lower(x)Fungsi mengembalikan salinan string xdengan semua karakter dikonversi ke huruf kecil. lowerFungsi bawaan bawaan hanya berfungsi untuk karakter ASCII.

upper(x)

upper(x)Fungsi mengembalikan salinan string xdengan semua karakter dikonversi ke huruf besar. upperFungsi bawaan bawaan hanya berfungsi untuk karakter ASCII.

ltrim(x,y)

ltrim(x,y)Fungsi mengembalikan string yang dibentuk dengan menghapus semua karakter yang muncul di y dari sisi kiri x. Jika tidak ada nilai untuk y, ltrim(x) hapus spasi dari sisi kiri x.

replace(x,y,z)

replace(x,y,z)Fungsi mengembalikan string dibentuk dengan mengganti string z untuk setiap kejadian string y dalam string x.

rtrim(x,y)

rtrim(x,y)Fungsi mengembalikan string yang dibentuk dengan menghapus semua karakter yang muncul di y dari sisi kanan x. Jika tidak ada nilai untuk y, rtrim(x) hapus spasi dari sisi kanan x.

substr(x,y,z)

substr(x,y,z)Fungsi mengembalikan substring dari string input x yang dimulai dengan karakter y th, dan yang merupakan zkarakter panjang.

Jika zdihilangkan, substr(x,y) mengembalikan semua karakter melalui akhir string x dimulai dengan karakter y th. Karakter paling kiri x adalah nomor 1. Jika ynegatif, karakter pertama substring ditemukan dengan menghitung dari kanan daripada kiri. Jika znegatif, maka abs(z) karakter yang mendahului karakter ke y - dikembalikan. Jika x adalah string, maka indeks karakter mengacu pada karakter UTF-8 yang sebenarnya. Jika x adalah BLOB, maka indeks mengacu pada byte.

trim(x,y)

trim(x,y)Fungsi mengembalikan string dibentuk dengan menghapus semua karakter yang muncul di y dari kedua sisix. Jika tidak ada nilai untuky, trim(x) menghapus spasi dari kedua sisix.

Berikut ini, Anda dapat menemukan fungsi LOB yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.

Fungsi LOB Deskripsi

hex(x)

hexFungsi menerima BLOB sebagai argumen dan mengembalikan versi string heksadesimal huruf besar dari konten BLOB.

randomblob (N)

randomblob(N)Fungsi mengembalikan BLOB N -byte yang berisi byte pseudorandom. Jika N kurang dari 1, BLOB acak 1-byte dikembalikan.

zeroblob(N)

zeroblob(N)Fungsi mengembalikan BLOB yang terdiri dari N byte 0x00.

Berikut ini, Anda dapat menemukan fungsi numerik yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.

Fungsi numerik Deskripsi

abs(x)

abs(x)Fungsi mengembalikan nilai absolut dari argumen x numerik. abs(x)Fungsi mengembalikan NULL jika x adalah NULL. abs(x)Fungsi mengembalikan 0.0 jika x adalah string atau BLOB yang tidak dapat dikonversi ke nilai numerik.

random()

randomFungsi mengembalikan bilangan bulat pseudorandom antara -9,223,372,036,854,775.808 dan +9,223,372,036,854.775,807.

round (x,y)

round (x,y)Fungsi mengembalikan nilai floating-point x dibulatkan ke digit y di sebelah kanan titik desimal. Jika tidak ada nilai untuk y, itu diasumsikan 0.

max (x,y...)

maxFungsi multiargument mengembalikan argumen dengan nilai maksimum, atau mengembalikan NULL jika argumen adalah NULL.

maxFungsi mencari argumennya dari kiri ke kanan untuk argumen yang mendefinisikan fungsi penyusunan. Jika ditemukan, ia menggunakan fungsi penyusunan itu untuk semua perbandingan string. Jika tidak ada argumen untuk max mendefinisikan fungsi penyusunan, fungsi BINARY penyusunan digunakan. maxFungsi adalah fungsi sederhana ketika memiliki dua atau lebih argumen, tetapi beroperasi sebagai fungsi agregat jika memiliki argumen tunggal.

min (x,y...)

minFungsi multiargument mengembalikan argumen dengan nilai minimum.

minFungsi mencari argumennya dari kiri ke kanan untuk argumen yang mendefinisikan fungsi penyusunan. Jika ditemukan, ia menggunakan fungsi penyusunan itu untuk semua perbandingan string. Jika tidak ada argumen untuk min mendefinisikan fungsi penyusunan, fungsi BINARY penyusunan digunakan. minFungsi adalah fungsi sederhana ketika memiliki dua atau lebih argumen, tetapi beroperasi sebagai fungsi agregat jika memiliki argumen tunggal.

Berikut ini, Anda dapat menemukan fungsi pemeriksaan NULL yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.

Fungsi pemeriksaan NULL Deskripsi

coalesce (x,y...)

coalesceFungsi mengembalikan salinan argumen non-Null pertama, tetapi mengembalikan NULL jika semua argumen adalah NULL. Fungsi coalesce memiliki setidaknya dua argumen.

ifnull(x,y)

ifnullFungsi mengembalikan salinan argumen non-Null pertama, tetapi mengembalikan NULL jika kedua argumen adalah NULL. ifnullFungsi ini memiliki dua argumen. ifnullFungsinya sama coalesce dengan dua argumen.

nullif(x,y)

nullif(x,y)Fungsi mengembalikan salinan argumen pertama jika argumen yang berbeda, tetapi mengembalikan NULL jika argumen yang sama.

nullif(x,y)Fungsi mencari argumennya dari kiri ke kanan untuk argumen yang mendefinisikan fungsi penyusunan. Jika ditemukan, ia menggunakan fungsi penyusunan itu untuk semua perbandingan string. Jika tidak ada argumen untuk nullif mendefinisikan fungsi penyusunan, maka fungsi penyusunan digunakan. BINARY

Berikut ini, Anda dapat menemukan fungsi tanggal dan waktu yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.

Fungsi tanggal dan waktu Deskripsi

date(timestring, modifier, modifier...)

dateFungsi mengembalikan tanggal dalam format YYYY-MM-DD.

time(timestring, modifier, modifier...)

timeFungsi mengembalikan waktu dalam format HH: MM: SS.

datetime(timestring, modifier, modifier...)

datetimeFungsi mengembalikan tanggal dan waktu dalam format YYYY-MM-DD HH: MM: SS.

julianday(timestring, modifier, modifier...)

juliandayFungsi mengembalikan jumlah hari sejak siang di Greenwich pada 24 November 4714 SM.

strftime(format, timestring, modifier, modifier...)

strftimeFungsi mengembalikan tanggal sesuai dengan format string ditentukan sebagai argumen pertama, menggunakan salah satu variabel berikut:

%d: hari bulan

%H: jam 00—24

%f: ** pecahan detik SS.SSS

%j: hari tahun 001—366

%J: ** Nomor hari Julian

%m: bulan 01—12

%M: menit 00—59

%s: detik sejak 1970-01-01

%S: detik 00—59

%w: hari dalam seminggu 0—6 Minggu==0

%W: minggu tahun 00—53

%Y: tahun 0000—9999

%%: %

Berikut ini, Anda dapat menemukan fungsi hash yang dapat Anda gunakan untuk membangun ekspresi aturan transformasi.

Fungsi hash Deskripsi

hash_sha256(x)

hashFungsi ini menghasilkan nilai hash untuk kolom input (menggunakan algoritma SHA-256) dan mengembalikan nilai heksadesimal dari nilai hash yang dihasilkan.

Untuk menggunakan hash fungsi dalam ekspresi, tambahkan hash_sha256(x) ke ekspresi dan ganti xdengan nama kolom sumber.

Menggunakan ekspresi CASE

CASEEkspresi 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(x)Fungsi SQLite menciptakan nilai hash pada target untuk kolom sumber,. 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 } }