

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

# Aturan dan tindakan transformasi
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations"></a>

Anda menggunakan tindakan transformasi untuk menentukan setiap transformasi Anda ingin menerapkan skema yang dipilih, tabel, atau tampilan. Aturan transformasi adalah opsional. 

## Batasan
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.Limitations"></a>
+ Anda tidak dapat menerapkan lebih dari satu tindakan aturan transformasi terhadap objek yang sama (skema, tabel, kolom, table-tablespace, atau index-tablespace). Anda dapat menerapkan beberapa tindakan aturan transformasi pada tingkat apa pun selama setiap tindakan transformasi diterapkan terhadap objek yang berbeda. Namun, pembatasan ini tidak berlaku saat menggunakan aturan transformasi masking data di mana Anda dapat memiliki transformasi lain seperti `ADD-COLUMN` atau `CHANGE-DATA-TYPE` untuk kolom yang sama.
+ Nama tabel dan nama kolom dalam aturan transformasi peka huruf besar/kecil. Misalnya, Anda harus memberikan nama tabel dan nama kolom untuk database Oracle atau Db2 dalam huruf besar.
+ Transformasi tidak didukung untuk nama kolom dengan Right-to-Left bahasa.
+ Transformasi tidak dapat dilakukan pada kolom yang berisi karakter khusus (misalnya \$1,\$1,/, -) dalam namanya.
+ Satu-satunya transformasi yang didukung untuk kolom yang dipetakan ke tipe BLOB/CLOB data adalah dengan menjatuhkan kolom pada target.
+ AWS DMS tidak mendukung replikasi dua tabel sumber ke satu tabel target. AWS DMS mereplikasi catatan dari tabel ke tabel, dan dari kolom ke kolom, sesuai dengan aturan transformasi tugas replikasi. Nama objek harus unik untuk mencegah tumpang tindih.

  Misalnya, tabel sumber memiliki kolom bernama `ID` dan tabel target yang sesuai memiliki kolom yang sudah ada sebelumnya yang disebut`id`. Jika aturan menggunakan `ADD-COLUMN` pernyataan untuk menambahkan kolom baru yang disebut`id`, dan SQLite pernyataan untuk mengisi kolom dengan nilai kustom, ini akan menciptakan duplikat, objek ambigu bernama `id` dan tidak didukung. 
+ Saat membuat aturan transformasi, sebaiknya gunakan `data-type` parameter hanya jika aturan pemilihan menentukan beberapa kolom, misalnya, saat Anda `column-name` menyetelnya`%`. Kami tidak menyarankan menggunakan `data-type` untuk memilih satu kolom.
+ AWS DMS tidak mendukung aturan transformasi di mana objek sumber dan target (tabel) berada pada database/skema yang sama. Menggunakan tabel yang sama sebagai sumber dan target dalam aturan transformasi dapat menyebabkan hasil yang tidak terduga dan berpotensi berbahaya, termasuk namun tidak terbatas pada perubahan yang tidak diinginkan pada data tabel, modifikasi struktur tabel atau bahkan tabel yang dijatuhkan.

## Nilai
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.Values"></a>

Untuk aturan pemetaan tabel yang menggunakan jenis aturan transformasi, Anda dapat menerapkan nilai berikut. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.html)

## Contoh
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.Examples"></a>

**Example Ubah Nama Skema**  
Contoh berikut mengganti nama skema dari`Test`di sumber Anda untuk`Test1`dalam target Anda.  

```
{

    "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": "rename",
            "rule-target": "schema",
            "object-locator": {
                "schema-name": "Test"
            },
            "value": "Test1"
        }
    ]
}
```

**Example Ubah Nama Tabel**  
Contoh berikut mengganti nama tabel dari`Actor`di sumber Anda untuk`Actor1`dalam target Anda.  

```
{
    "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": "rename",
            "rule-target": "table",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Actor"
            },
            "value": "Actor1"
        }
    ]
}
```

**Example Ubah Nama Kolom**  
Contoh berikut mengganti nama kolom dalam tabel`Actor`dari`first_name`di sumber Anda untuk`fname`dalam target Anda.  

```
{
    "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": "4",
            "rule-name": "4",
            "rule-action": "rename",
            "rule-target": "column",
            "object-locator": {
                "schema-name": "test",
                "table-name": "Actor",
                "column-name" : "first_name"
            },
            "value": "fname"
        }
    ]
}
```

**Example Mengubah nama tablespace tabel Oracle**  
Contoh berikut mengganti nama tablespace tabel bernama`SetSpace`untuk sebuah tabel bernama`Actor`di sumber Oracle Anda untuk`SceneTblSpace`di titik akhir target Oracle Anda.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Play",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "transformation",
            "rule-id": "2",
            "rule-name": "2",
            "rule-action": "rename",
            "rule-target": "table-tablespace",
            "object-locator": {
                "schema-name": "Play",
                "table-name": "Actor",
                "table-tablespace-name": "SetSpace"
            },
            "value": "SceneTblSpace"
        }
    ]
}
```

**Example Mengubah nama sebuah tablespace indeks Oracle**  
Contoh berikut mengganti nama tablespace indeks bernama`SetISpace`untuk sebuah tabel bernama`Actor`di sumber Oracle Anda untuk`SceneIdxSpace`di titik akhir target Oracle Anda.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Play",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "transformation",
            "rule-id": "2",
            "rule-name": "2",
            "rule-action": "rename",
            "rule-target": "table-tablespace",
            "object-locator": {
                "schema-name": "Play",
                "table-name": "Actor",
                "table-tablespace-name": "SetISpace"
            },
            "value": "SceneIdxSpace"
        }
    ]
}
```

**Example Tambahkan kolom**  
Contoh berikut menambahkan`datetime`kolom ke tabel`Actor`dalam skema`test`.  

```
{
    "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": "actor"
            },
            "value": "last_updated",
            "data-type": {
                "type": "datetime",
                "precision": 6
            }
        }
    ]
}
```

**Example Hapus kolom**  
Contoh berikut mengubah tabel bernama`Actor`di sumber Anda untuk menghapus semua kolom yang dimulai dengan karakter`col`dari itu di target Anda.  

```
{
 	"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": "remove-column",
		"rule-target": "column",
		"object-locator": {
			"schema-name": "test",
			"table-name": "Actor",
			"column-name": "col%"
		}
	}]
 }
```

**Example Mengkonversi ke lowercase**  
Contoh berikut mengkonversi nama tabel dari`ACTOR`di sumber Anda untuk`actor`dalam target Anda.  

```
{
	"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": "convert-lowercase",
		"rule-target": "table",
		"object-locator": {
			"schema-name": "test",
			"table-name": "ACTOR"
		}
	}]
}
```

**Example Mengkonversi ke huruf besar**  
Contoh berikut mengkonversi semua kolom di semua tabel dan semua skema dari huruf kecil di sumber Anda untuk huruf besar dalam target Anda.  

```
{
    "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": "convert-uppercase",
            "rule-target": "column",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%",
                "column-name": "%"
            }
        }
    ]
}
```

**Example Tambahkan prefiks**  
Contoh berikut mengubah semua tabel di sumber Anda untuk menambahkan awalan`DMS_`kepada mereka dalam target Anda.  

```
{
 	"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-prefix",
		"rule-target": "table",
		"object-locator": {
			"schema-name": "test",
			"table-name": "%"
		},
		"value": "DMS_"
	}]
 
}
```

**Example Ganti awalan**  
Contoh berikut mengubah semua kolom yang berisi awalan`Pre_`di sumber anda untuk mengganti awalan dengan`NewPre_`dalam target Anda.  

```
{
    "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": "replace-prefix",
            "rule-target": "column",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%",
                "column-name": "%"
            },
            "value": "NewPre_",
            "old-value": "Pre_"
        }
    ]
}
```

**Example Hapus sufiks**  
Contoh berikut mengubah semua tabel di sumber Anda untuk menghapus akhiran`_DMS`dari mereka di target Anda.  

```
{
	"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": "remove-suffix",
		"rule-target": "table",
		"object-locator": {
			"schema-name": "test",
			"table-name": "%"
		},
		"value": "_DMS"
	}]
}
```

**Example Mendefinisikan kunci primer**  
Contoh berikut mendefinisikan kunci primer bernama`ITEM-primary-key`pada tiga kolom`ITEM`tabel bermigrasi ke titik akhir target Anda.  

```
{
	"rules": [{
		"rule-type": "selection",
		"rule-id": "1",
		"rule-name": "1",
		"object-locator": {
			"schema-name": "inventory",
			"table-name": "%"
		},
		"rule-action": "include"
	}, {
		"rule-type": "transformation",
		"rule-id": "2",
		"rule-name": "2",
		"rule-action": "define-primary-key",
		"rule-target": "table",
		"object-locator": {
			"schema-name": "inventory",
			"table-name": "ITEM"
		},
		"primary-key-def": {
			"name": "ITEM-primary-key",
			"columns": [
				"ITEM-NAME",
				"BOM-MODEL-NUM",
				"BOM-PART-NUM"
			]
              }
	}]
}
```

**Example Tentukan indeks yang unik**  
Contoh berikut mendefinisikan indeks unik bernama`ITEM-unique-idx`pada tiga kolom`ITEM`tabel bermigrasi ke titik akhir target Anda.  

```
{
	"rules": [{
		"rule-type": "selection",
		"rule-id": "1",
		"rule-name": "1",
		"object-locator": {
			"schema-name": "inventory",
			"table-name": "%"
		},
		"rule-action": "include"
	}, {
		"rule-type": "transformation",
		"rule-id": "2",
		"rule-name": "2",
		"rule-action": "define-primary-key",
		"rule-target": "table",
		"object-locator": {
			"schema-name": "inventory",
			"table-name": "ITEM"
		},
		"primary-key-def": {
			"name": "ITEM-unique-idx",
			"origin": "unique-index",
			"columns": [
				"ITEM-NAME",
				"BOM-MODEL-NUM",
				"BOM-PART-NUM"
			]
              }
	}]
}
```

**Example Mengubah tipe data dari kolom target**  
Contoh berikut mengubah tipe data dari kolom target bernama`SALE_AMOUNT`dari tipe data yang ada ke`int8`.  

```
{
    "rule-type": "transformation",
    "rule-id": "1",
    "rule-name": "RuleName 1",
    "rule-action": "change-data-type",
    "rule-target": "column",
    "object-locator": {
        "schema-name": "dbo",
        "table-name": "dms",
        "column-name": "SALE_AMOUNT"
    },
    "data-type": {
        "type": "int8"
    }
}
```

**Example Tambahkan kolom gambar sebelum**  
Untuk kolom sumber bernama`emp_no`, aturan transformasi dalam contoh berikut menambahkan kolom baru bernama`BI_emp_no`target.  

```
{
	"rules": [{
			"rule-type": "selection",
			"rule-id": "1",
			"rule-name": "1",
			"object-locator": {
				"schema-name": "%",
				"table-name": "%"
			},
			"rule-action": "include"
		},
		{
			"rule-type": "transformation",
			"rule-id": "2",
			"rule-name": "2",
			"rule-target": "column",
			"object-locator": {
				"schema-name": "%",
				"table-name": "employees"
			},
			"rule-action": "add-before-image-columns",
			"before-image-def": {
				"column-prefix": "BI_",
				"column-suffix": "",
				"column-filter": "pk-only"
			}
		}
	]
}
```
Di sini, pernyataan berikut populates`BI_emp_no`kolom di baris yang sesuai dengan 1.  

```
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
```
Saat menulis pembaruan CDC ke AWS DMS target yang didukung, `BI_emp_no` kolom memungkinkan untuk mengetahui baris mana yang memiliki nilai terbaru di `emp_no` kolom.