

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 変換ルールおよび変換アクション
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations"></a>

選択したスキーマ、テーブルまたはビューに適用する変換を指定するには、変換アクションを使用します。変換ルールはオプションです。

## 制限事項
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.Limitations"></a>
+ 同じオブジェクト (スキーマ、テーブル、列、テーブルとテーブルスペース、またはインデックスとテーブルスペース) に対して複数の変換ルールアクションを適用することはできません。各変換アクションが異なるオブジェクトに対して適用される限り、複数の変換ルールアクションを任意のレベルに適用できます。ただし、同じ列に対して `ADD-COLUMN` または `CHANGE-DATA-TYPE` のような別の変換を実行できるデータマスキング変換ルールを使用する場合、この制限は適用されません。
+ 変換ルールのテーブル名と列名では大文字と小文字が区別されます。例えば、Oracle データベースまたは Db2 データベースのテーブル名と列名は大文字で指定する必要があります。
+ 右から左へ記述する言語の列名の変換はサポートされていません。
+ 変換は、名前に特殊文字 (\$1、\$1、/、-など) を含む列では実行できません。
+ BLOB データ型 や CLOB データ型にマップされた列に対してサポートされている変換は、ターゲットでの列の削除のみです。
+ AWS DMS では、2 つのソーステーブルを 1 つのターゲットテーブルにレプリケートすることはできません。 は、 AWS DMS レプリケーションタスクの変換ルールに従って、テーブル間、および列間でレコードをレプリケートします。重複を避けるため、オブジェクト名は一意である必要があります。

  例えば、ソーステーブルに `ID` という名前の列があり、対応するターゲットテーブルには `id` という既存の列があるとします。ルールで `ADD-COLUMN` ステートメントを使用して `id` という新しい列を追加し、SQLite ステートメントを使用してその列にカスタム値を設定すると、`id` という名前の重複したあいまいなオブジェクトが作成されます。これはサポートされません。
+ 変換ルールを作成する場合、`column-name` を `%` に設定するときなど、選択ルールが複数の列を指定する場合にのみ、`data-type` パラメータを使用することをお勧めします。単一の列を選択するために `data-type` を使用することはお勧めしません。
+ AWS DMS は、ソースオブジェクトとターゲットオブジェクト (テーブル) が同じデータベース/スキーマにある変換ルールをサポートしていません。変換ルールでソースとターゲットの両方と同じテーブルを使用すると、テーブルデータへの意図しない変更、テーブル構造の変更、テーブルの削除など、有害になりうる予想外の結果をもたらす可能性があります。

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

変換ルールタイプを使用するテーブルマッピングルールの場合、次の値を適用できます。

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

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

**Example スキーマの名前変更**  
以下の例では、スキーマの名前をソースでの `Test` からターゲットでの `Test1` に変更します。  

```
{

    "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 テーブル名の変更**  
以下の例では、テーブルの名前をソースでの `Actor` からターゲットでの `Actor1` に変更します。  

```
{
    "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 列名の変更**  
以下の例では、テーブル `Actor` の列の名前をソースでの `first_name` からターゲットでの `fname` に変更します。  

```
{
    "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 Oracle テーブルのテーブルスペースの名前変更**  
次の例では、Oracle ソースの `Actor` という名前のテーブルの `SetSpace` という名前のテーブルのテーブルスペースを、Oracle のターゲットエンドポイントで `SceneTblSpace` に名前変更します。  

```
{
    "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 Oracle インデックスのテーブルスペースの名前変更**  
以下の例では、Oracle ソースの `Actor` という名前のテーブルの `SetISpace` という名前のインデックスのテーブルスペースを、Oracle のターゲットエンドポイントで `SceneIdxSpace` に名前変更します。  

```
{
    "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 列の追加**  
次の例では、スキーマ `test` のテーブル `Actor` に `datetime` 列を追加します。  

```
{
    "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 列の削除**  
以下の例では、ソース内の `Actor` という名前のテーブルを変換し、先頭文字が `col` のすべての列をターゲットから削除します。  

```
{
 	"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 [Convert to lowercase] (小文字に変換)**  
以下の例では、テーブルの名前をソースでの `ACTOR` からターゲットでの `actor` に変換します。  

```
{
	"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 大文字への変換**  
次の例では、すべてのテーブルおよびすべてのスキーマ内のすべての列を、ソースでの小文字からターゲットでの大文字に変換します。  

```
{
    "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 プレフィックスの追加**  
以下の例では、ソース内のすべてのテーブルを変換し、ターゲットではそれらのテーブルにプレフィックス `DMS_` を追加します。  

```
{
 	"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 プレフィックスの置き換え**  
以下の例では、ソースでプレフィックス `Pre_` を含むすべての列を変換し、ターゲットではプレフィックスを `NewPre_` に置き換えます。  

```
{
    "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 サフィックスの削除**  
以下の例では、ソース内のすべてのテーブルを変換し、ターゲットではそれらのテーブルからサフィックス `_DMS` を削除します。  

```
{
	"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 プライマリキーの定義**  
次の例では、ターゲットエンドポイントに移行した `ITEM` テーブルの 3 つの列の `ITEM-primary-key` という名前のプライマリキーを定義します。  

```
{
	"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 一意のインデックスの定義**  
次の例では、ターゲットエンドポイントに移行した `ITEM` テーブルの 3 つの列の `ITEM-unique-idx` という名前の一意のインデックスを定義します。  

```
{
	"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 ターゲット列のデータ型の変更**  
次の例では、`SALE_AMOUNT` という名前のターゲット列のデータ型を既存のデータ型から `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 前イメージ列の追加**  
`emp_no` という名前のソース列の場合、次の例の変換ルールによって、ターゲットに `BI_emp_no` という名前の新しい列が追加されます。  

```
{
	"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"
			}
		}
	]
}
```
ここでは、次のステートメントは、対応する行の `BI_emp_no` 列に 1 を代入します。  

```
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
```
サポートされている AWS DMS ターゲットに CDC 更新を書き込む場合、 `BI_emp_no`列では、どの行が`emp_no`列の値を更新したかを判断できます。