Menggunakan filter sumber - 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 filter sumber

Anda dapat menggunakan filter sumber untuk membatasi jumlah dan jenis catatan yang ditransfer dari sumber ke target. Misalnya, Anda dapat menentukan bahwa hanya karyawan di markas yang dipindahkan ke basis data target. Filter adalah bagian dari aturan seleksi. Terapkan filter pada kolom data.

Filter sumber harus mengikuti kendala ini:

  • Aturan seleksi tidak dapat memiliki filter atau satu atau lebih filter.

  • Setiap filter dapat memiliki satu atau beberapa kondisi filter.

  • Jika lebih dari satu filter digunakan, daftar filter digabungkan seolah-olah menggunakan operator AND antara filter.

  • Jika lebih dari satu kondisi filter digunakan dalam filter tunggal, daftar kondisi filter digabungkan seolah-olah menggunakan operator OR antara kondisi filter.

  • Filter hanya diterapkan bilarule-action = 'include'.

  • Filter memerlukan nama kolom dan daftar kondisi filter. Kondisi filter harus memiliki operator filter yang terkait dengan salah satu nilai, dua nilai, atau tidak ada nilai, tergantung pada operator.

  • nama kolom, nama tabel, nama tampilan, dan nama skema case-sensitive. Oracle dan Db2 harus selalu menggunakan UPPER case.

  • Filter hanya mendukung tabel dengan nama yang tepat. Filter tidak mendukung wildcard.

Batasan berikut berlaku untuk menggunakan filter sumber:

  • Filter tidak menghitung kolom right-to-left bahasa.

  • Jangan menerapkan filter ke kolom LOB.

  • Terapkan filter hanya untukberubahkolom, yang tidak diperbarui setelah pembuatan. Jika filter sumber diterapkan kebisa berubahkolom, yang dapat diperbarui setelah penciptaan, perilaku yang merugikan dapat mengakibatkan.

    Misalnya, filter untuk mengecualikan atau menyertakan baris tertentu dalam kolom selalu mengecualikan atau termasuk baris tertentu bahkan jika baris kemudian berubah. Misalkan Anda mengecualikan atau menyertakan baris 1-10 di kolom A, dan mereka kemudian berubah menjadi baris 11-20. Dalam hal ini, mereka terus dikecualikan atau disertakan bahkan ketika data tidak lagi sama.

    Demikian pula, anggaplah bahwa baris di luar cakupan filter kemudian diperbarui (atau diperbarui dan dihapus), dan kemudian harus dikecualikan atau disertakan seperti yang didefinisikan oleh filter. Dalam kasus ini, itu direplikasi pada target.

Kekhawatiran tambahan berikut berlaku saat menggunakan filter sumber:

  • Kami menyarankan Anda membuat indeks menggunakan kolom yang disertakan dalam definisi penyaringan dan kunci utama.

Membuat aturan filter sumber di JSON

Anda dapat membuat filter sumber menggunakan parameter filters JSON dari aturan pilihan. Parameter filters menentukan array dari satu atau lebih objek JSON. Setiap objek memiliki parameter yang menentukan jenis filter sumber, nama kolom, dan kondisi filter. Kondisi filter ini mencakup satu atau lebih operator filter dan nilai filter.

Tabel berikut menunjukkan parameter untuk menentukan penyaringan sumber dalamfiltersobjek.

Parameter

Nilai

filter-type

source

column-name

Parameter dengan nama kolom sumber di mana Anda ingin filter diterapkan. Nama domain tidak peka huruf besar/kecil.

filter-conditions

Array dari satu atau lebih objek yang berisifilter-operatorparameter dan nol atau lebih terkait nilai parameter, tergantung padafilter-operatornilai.

filter-operator

Parameter dengan salah satu nilai berikut:

  • lte— kurang dari atau sama dengan satu nilai

  • ste— kurang dari atau sama dengan satu nilai (lteAlias)

  • gte— lebih besar dari atau sama dengan satu nilai

  • eq— sama dengan satu nilai

  • noteq— tidak sama dengan satu nilai

  • between— sama dengan atau antara dua nilai

  • notbetween— tidak sama dengan atau diantara dua nilai

  • Nilai nullNULL

  • notnull— tidakNULLnilai

value atau

start-value dan end-value atau

tidak ada nilai

Nol atau lebih parameter nilai yang terkait denganfilter-operator:

  • Jikafilter-operatoradalahlte,ste,gte,eq, ataunoteq, gunakanvalueuntuk menentukan satu parameter nilai.

  • Jikafilter-operatoradalahbetweenataunotbetween, gunakanstart-valuedanend-valueuntuk menentukan dua parameter nilai.

  • Jikafilter-operatoradalahnullataunotnull, tentukan tidak ada parameter nilai.

Contoh berikut menunjukkan beberapa cara umum untuk menggunakan filter sumber.

contoh Filter tunggal

Filter berikut mereplikasi semua karyawan di mana empid >= 100 ke basis data target.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "gte", "value": "50" },{ "filter-operator": "noteq", "value": "100" }] }] }] }
contoh Operator filter multipel

Filter berikut berlaku beberapa operator filter untuk satu kolom data. Filter mereplikasi semua karyawan di mana (empid <= 10) ATAU (empid is between 50 and 75) ATAU (empid >= 100) ke basis data target.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "lte", "value": "10" }, { "filter-operator": "between", "start-value": "50", "end-value": "75" }, { "filter-operator": "gte", "value": "100" }] }] }] }
contoh Filter beberapa

Filter berikut menerapkan beberapa filter untuk dua kolom dalam sebuah tabel. Filter mereplikasi semua karyawan di mana (empid <= 100) DAN (dept = tech) ke basis data target.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "lte", "value": "100" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "eq", "value": "tech" }] }] }] }
contoh Nilai NULL filter

Filter berikut menunjukkan bagaimana cara untuk memfilter nilai-nilai kosong. Ini mereplikasi semua karyawan di mana dept = NULL ke basis data target.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "null" }] }] }] }
contoh Penyaringan menggunakan operator NOT

Beberapa operator dapat digunakan dalam bentuk negatif. Filter berikut mereplikasi semua karyawan di mana (empid is < 50) OR (empid is > 75) ke basis data target.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "notbetween", "start-value": "50", "end-value": "75" }] }] }] }
contoh Menggunakan operator filter Campuran

Mulai dengan AWS DMS versi 3.5.0, Anda dapat mencampur operator inklusif dan operator negatif.

Filter berikut mereplikasi semua karyawan di mana (empid != 50) AND (dept is not NULL) ke basis data target.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "noteq", "value": "50" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "notnull" }] }] }] }

Perhatikan hal berikut saat menggunakan null dengan operator filter lain:

  • Menggunakan kondisi inklusif, negatif, dan null filter bersama-sama dalam filter yang sama tidak akan mereplikasi catatan dengan NULL nilai.

  • Menggunakan kondisi negatif dan null filter bersama-sama tanpa kondisi filter inklusif dalam filter yang sama tidak akan mereplikasi data apa pun.

  • Menggunakan kondisi filter negatif tanpa set kondisi null filter secara eksplisit tidak akan mereplikasi catatan dengan nilai. NULL

Penyaringan berdasarkan waktu dan tanggal

Saat memilih data yang akan diimpor, Anda dapat menentukan tanggal atau waktu sebagai bagian dari kriteria filter Anda. AWS DMS menggunakan format tanggal YYYY-MM-DD dan format waktu YYYY-MM-DD HH: MM: SS untuk penyaringan. Fungsi AWS DMS perbandingan mengikuti konvensi SQLite. Untuk informasi lebih lanjut tentang jenis data SQLite dan perbandingan tanggal, lihatTipe data dalam SQLite versi 3dalam dokumentasi SQLite.

Filter berikut menunjukkan bagaimana untuk memfilter pada sebuah tanggal. Ini mereplikasi semua karyawan di mana empstartdate >= January 1, 2002 ke basis data target.

contoh Filter tanggal tunggal
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [{ "filter-operator": "gte", "value": "2002-01-01" }] }] }] }