

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan filter sumber
<a name="CHAP_Tasks.CustomizingTasks.Filters"></a>

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 bila`rule-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 untuk*berubah*kolom, yang tidak diperbarui setelah pembuatan. Jika filter sumber diterapkan ke*bisa berubah*kolom, 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
<a name="CHAP_Tasks.CustomizingTasks.Filters.Applying"></a>

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 dalam`filters`objek.


|  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: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.Filters.html)  | 
|  `value` atau  `start-value` dan `end-value` atau tidak ada nilai  |  Nol atau lebih parameter nilai yang terkait dengan`filter-operator`: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.Filters.html)  | 

Contoh berikut menunjukkan beberapa cara umum untuk menggunakan filter sumber.

**Example 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": "100"
             }]
         }]
     }]
 }
```

**Example 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"
            }]
        }]
    }]
}
```

**Example 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"
            }]
        }]
    }]
}
```

**Example 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"
            }]
        }]
    }]
}
```

**Example 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"
            }]
        }]
    }]
}
```

**Example 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
<a name="CHAP_Tasks.CustomizingTasks.Filters.Dates"></a>

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.SSS untuk pemfilteran. Fungsi AWS DMS perbandingan mengikuti SQLite konvensi. Untuk informasi selengkapnya tentang tipe SQLite data dan perbandingan tanggal, lihat Jenis [data di SQLite versi 3 dalam dokumentasi](https://sqlite.org/datatype3.html). SQLite 

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

**Example 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"
            }]
        }]
    }]
}
```