

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 변환 규칙 표현식을 사용하여 열 내용 정의
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions"></a>

변환 규칙 내에서 표현식을 사용하여 새 열과 기존 열의 내용을 정의할 수 있습니다. 예를 들어, 표현식을 사용하여 열을 추가하거나 소스 테이블 헤더를 대상에 복제할 수 있습니다. 표현식을 사용하여 대상 테이블의 레코드를 소스에서 삽입, 업데이트 또는 삭제된 것으로 플래그를 지정할 수도 있습니다.

**Topics**
+ [표현식을 사용하여 열 추가](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-adding)
+ [표현식을 사용하여 대상 레코드에 플래그 지정](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-Flagging)
+ [표현식을 사용하여 소스 테이블 헤더 복제](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-Headers)
+ [SQLite 함수를 사용하여 표현식 작성](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-SQLite)
+ [표현식을 사용하여 대상 테이블에 메타데이터 추가](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-Metadata)

## 표현식을 사용하여 열 추가
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-adding"></a>

변환 규칙에서 표현식을 사용하여 테이블에 열을 추가하려면 `add-column` 규칙 작업 및 `column` 규칙 대상을 사용합니다.

다음 예에서는 `ITEM` 테이블에 새 열을 추가합니다. 50자 길이의 `string` 데이터 형식을 사용하여 새 열 이름을 `FULL_NAME`으로 설정합니다. 표현식은 기존의 두 열 `FIRST_NAME` 및 `LAST_NAME`의 값을 결합하여 `FULL_NAME`으로 평가합니다. `schema-name`, `table-name` 및 표현식 파라미터는 소스 데이터베이스 테이블의 객체를 참조합니다. `Value` 및 `data-type`블록은 대상 데이터베이스 테이블의 객체를 참조합니다.

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

## 표현식을 사용하여 대상 레코드에 플래그 지정
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-Flagging"></a>

변환 규칙에서 표현식을 사용하여 대상 테이블의 레코드를 소스 테이블에서 삽입, 업데이트 또는 삭제된 것으로 플래그를 지정할 수 있습니다. 표현식은 `operation_indicator` 함수를 사용하여 레코드에 플래그를 지정합니다. 소스에서 삭제된 레코드는 대상에서 삭제되지 않습니다. 그 대신, 대상 레코드가 소스에서 삭제되었음을 나타내는 사용자 제공 값으로 플래그가 지정됩니다.

**참고**  
이 `operation_indicator` 함수는 원본 및 대상 데이터베이스에 프라이머리 키가 있는 테이블에서만 작동합니다.

예를 들어, 다음 변환 규칙은 먼저 대상 테이블에 새 `Operation` 열을 추가합니다. 그런 다음, 레코드가 소스 테이블에서 삭제될 때마다 `D` 값으로 열을 업데이트합니다.

```
{
      "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
      }
}
```

## 표현식을 사용하여 소스 테이블 헤더 복제
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-Headers"></a>

기본적으로 소스 테이블의 헤더는 대상에 복제되지 않습니다. 복제할 헤더를 나타내려면 테이블 열 헤더를 포함하는 표현식과 함께 변환 규칙을 사용합니다.

표현식에서 다음 열 헤더를 사용할 수 있습니다.

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

다음 예에서는 소스의 스트림 위치 값을 사용하여 대상에 새 열을 추가합니다. SQL Server의 경우, 스트림 위치 값은 소스 엔드포인트의 LSN입니다. Oracle의 경우, 스트림 위치 값은 소스 엔드포인트의 SCN입니다.

```
{
      "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
      }
    }
```

다음 예제에서는 원본의 고유한 증분 번호가 있는 새 열을 대상에 추가합니다. 이 값은 작업 수준에서 35자리 고유 숫자를 나타냅니다. 처음 16자리는 타임스탬프의 일부이고, 마지막 19자리는 DBMS에서 증분한 record\$1id 번호입니다.

```
{
"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
}
}
```

## SQLite 함수를 사용하여 표현식 작성
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-SQLite"></a>

테이블 설정을 사용하여 지정된 작업에서 선택한 테이블 또는 뷰에 적용할 설정을 지정합니다. 테이블 설정 규칙은 선택 사항입니다.

**참고**  
MongoDB 및 DocumentDB 데이터베이스는 테이블과 뷰의 개념 대신 데이터 레코드를 *컬렉션*에 함께 수집된 문서로 저장합니다. 따라서 MongoDB 또는 DocumentDB 소스에서 마이그레이션할 때는 테이블과 뷰보다는 선택한 *컬렉션*에 대한 병렬 로드 설정의 범위 세그먼트화 유형을 고려하세요.

**Topics**
+ [CASE 표현식 사용](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-SQLite.CASE)
+ [예제:](#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-SQLite.Ex)

다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 문자열 함수를 찾을 수 있습니다.


| 문자열 함수 | 설명 | 
| --- | --- | 
|  `lower(x)`  |  이 `lower(x)` 함수는 모든 문자가 소문자로 변환된 *`x`* 문자열의 복사본을 반환합니다. 기본 내장 `lower` 함수는 ASCII 문자에만 사용할 수 있습니다.  | 
|  `upper(x)`  |  이 `upper(x)` 함수는 모든 문자가 소문자로 변환된 *`x`* 문자열의 복사본을 반환합니다. 기본 내장 `upper` 함수는 ASCII 문자에만 사용할 수 있습니다.  | 
|  `ltrim(x,y)`  |  이 `ltrim(x,y)` 함수는 x의 왼쪽에서부터 y에 표시되는 모든 문자를 제거하여 구성된 문자열을 반환합니다. y에 값이 없는 경우, `ltrim(x)`는 x의 왼쪽에서 공백을 제거합니다.  | 
|  `replace(x,y,z)`  |  이 `replace(x,y,z)` 함수는 문자열 x에서 나타나는 모든 문자열 y를 문자열 z로 대체하여 구성된 문자열을 반환합니다.  | 
| `rtrim(x,y)` |  이 `rtrim(x,y)` 함수는 x의 오른쪽에서부터 y에 표시되는 모든 문자를 제거하여 구성된 문자열을 반환합니다. y에 값이 없는 경우, `rtrim(x)`는 x의 오른쪽에서 공백을 제거합니다.  | 
| `substr(x,y,z)` |  이 `substr(x,y,z)` 함수는 입력 문자열의 첫 `y`번째 문자로 시작하는 하위 문자열 `x`를 반환합니다. 이 문자열의 길이는 *`z`*자입니다. *`z`*를 생략하면 `substr(x,y)`은 `y`번째 문자로 시작하는 `x` 문자열의 끝까지 모든 문자를 반환합니다. `x`의 가장 왼쪽 문자는 숫자 1입니다. *`y`*가 음수인 경우, 왼쪽이 아닌 오른쪽부터 계수하여 하위 문자열의 첫 번째 문자를 찾습니다. *`z`*가 음수인 경우, 첫 `y` 번째 문자 앞의 `abs(z)` 문자가 반환됩니다. `x`가 문자열인 경우, 문자의 인덱스는 실제 UTF-8 문자를 참조합니다. `x`가 BLOB인 경우, 인덱스는 바이트를 나타냅니다.  | 
| trim(x,y) |  이 `trim(x,y)` 함수는 `x`의 양쪽에서부터 `y`에 표시되는 모든 문자를 제거하여 구성된 문자열을 반환합니다. `y`에 값이 없는 경우, `trim(x)`는 `x`의 오른쪽에서 공백을 제거합니다.  | 

다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 LOB 함수를 찾을 수 있습니다.


| LOB 함수 | 설명 | 
| --- | --- | 
|  `hex(x)`  |  이 `hex` 함수는 BLOB를 인수로 받고 BLOB 내용의 대문자 16진수 문자열 버전을 반환합니다.  | 
|  `randomblob (N)`  |  이 `randomblob(N)` 함수는 의사 랜덤 바이트를 포함하는 `N`바이트 BLOB를 반환합니다. *N*이 1보다 작으면 1바이트 임의 BLOB가 반환됩니다.  | 
|  `zeroblob(N)`  |  이 `zeroblob(N)` 함수는 `N`바이트의 0x00으로 구성된 BLOB를 반환합니다.  | 

다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 numeric 함수를 찾을 수 있습니다.


| Numeric 함수 | 설명 | 
| --- | --- | 
|  `abs(x)`  |  이 `abs(x)` 함수는 숫자 인수 `x`의 절대값을 반환합니다. *x*가 NULL인 경우 `abs(x)` 함수는 NULL을 반환합니다. **x**가 숫자 값으로 변환할 수 없는 문자열 또는 BLOB인 경우 `abs(x)` 함수는 0.0을 반환합니다.  | 
|  `random()`  |  이 `random` 함수는 -9,223,372,036,854,775,808 \$1 \$19,223,372,036,854,775,807 사이의 의사 랜덤 정수를 반환합니다.  | 
|  `round (x,y)`  |  이 `round (x,y)` 함수는 소수점 오른쪽의 *y*자리 숫자로 반올림된 부동 소수점 값 *x*를 반환합니다. *y*에 값이 없으면 0으로 간주됩니다.  | 
|  `max (x,y...)`  |  다중 인수 `max` 함수는 최대값이 포함된 인수를 반환하며 인수가 NULL이면 NULL을 반환합니다. `max` 함수는 인수의 왼쪽에서 오른쪽으로 데이터 정렬 함수를 정의하는 인수를 검색합니다. 검색으로 찾은 인수는 모든 문자열 비교에 해당 데이터 정렬 함수를 사용합니다. 데이터 정렬 함수를 정의하는 인수가 `max`에 하나도 없다면 `BINARY` 데이터 정렬 함수가 사용됩니다. `max` 함수는 인수가 두 개 이상이면 단순 함수이지만 인수가 하나뿐이면 집계 함수로 작동합니다.  | 
|  `min (x,y...)`  |  다중 인수 `min` 함수는 최소값이 포함된 인수를 반환합니다. `min` 함수는 인수의 왼쪽에서 오른쪽으로 데이터 정렬 함수를 정의하는 인수를 검색합니다. 검색으로 찾은 인수는 모든 문자열 비교에 해당 데이터 정렬 함수를 사용합니다. 데이터 정렬 함수를 정의하는 인수가 `min`에 하나도 없다면 `BINARY` 데이터 정렬 함수가 사용됩니다. `min` 함수는 인수가 두 개 이상이면 단순 함수이지만 인수가 하나뿐이면 집계 함수로 작동합니다.  | 

다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 NULL 체크 함수를 찾을 수 있습니다.


| NULL 체크 함수 | 설명 | 
| --- | --- | 
|  `coalesce (x,y...)`  |  이 `coalesce` 함수는 NULL이 아닌 첫 번째 인수의 복사본을 반환하지만 모든 인수가 NULL이면 NULL을 반환합니다. coalesce 함수에는 인수가 두 개 이상 있습니다.  | 
|  `ifnull(x,y)`  |  이 `ifnull` 함수는 NULL이 아닌 첫 번째 인수의 복사본을 반환하지만 두 인수가 모두 NULL이면 NULL을 반환합니다. 이 `ifnull` 함수에는 정확히 두 개의 인수가 있습니다. `ifnull` 함수는 두 개의 인수가 있는 `coalesce`와 같은 함수입니다.  | 
|  `nullif(x,y)`  |  `nullif(x,y)` 함수는 인수가 다르면 첫 번째 인수의 복사본을 반환하지만 인수가 같으면 NULL을 반환합니다. `nullif(x,y)` 함수는 인수의 왼쪽에서 오른쪽으로 데이터 정렬 함수를 정의하는 인수를 검색합니다. 검색으로 찾은 인수는 모든 문자열 비교에 해당 데이터 정렬 함수를 사용합니다. 데이터 정렬 함수를 정의하는 인수가 nullif에 하나도 없다면 `BINARY` 데이터 정렬 함수가 사용됩니다.  | 

다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 날짜 및 시간 함수를 찾을 수 있습니다.


| 날짜 및 시간 함수 | 설명 | 
| --- | --- | 
|  `date(timestring, modifier, modifier...)`  |  이 `date` 함수는 YYYY-MM-DD 형식으로 날짜를 반환합니다.  | 
|  `time(timestring, modifier, modifier...)`  |  이 `time` 함수는 HH:MM:SS 형식으로 시간을 반환합니다.  | 
|  `datetime(timestring, modifier, modifier...)`  |  이 `datetime` 함수는 YYYY-MM-DD HH:MM:SS 형식으로 날짜 및 시간을 반환합니다.  | 
|  `julianday(timestring, modifier, modifier...)`  |  이 `julianday` 함수는 기원전 4714년 11월 24일 그리니치에서 정오 이후 경과한 일수를 반환합니다.  | 
|  `strftime(format, timestring, modifier, modifier...)`  |  이 `strftime` 함수는 다음 변수 중 하나를 사용하여 첫 번째 인수로 지정된 형식 문자열에 따라 날짜를 반환합니다. `%d`: 날짜(월, 일) `%H`: 00\$124시 `%f`: \$1\$1 소수 초(SS.SSS) `%j`: 연중 일(001\$1366) `%J`: \$1\$1 율리우스력 날수 `%m`: 01\$112개월 차 `%M`: 00\$159분 `%s`: 1970-01-01 이후 경과 시간(초) `%S`: 00\$159초 `%w`: 주중 일(0\$16, 일요일 =0) `%W`: 연중 주(00\$153) `%Y`: 0000\$19999년도 `%%`: %  | 

다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 해시 함수를 찾을 수 있습니다.


| 해시 함수 | 설명 | 
| --- | --- | 
|  `hash_sha256(x)`  |  이 `hash` 함수는 (SHA-256 알고리즘을 사용하여) 입력 열에 대한 해시 값을 생성하고 생성된 해시 값의 16진수 값을 반환합니다. 표현식에서 `hash` 함수를 사용하려면 표현식에 `hash_sha256(x)` 함수를 추가하고 *`x`*를 소스 열 이름으로 바꾸세요.  | 

### CASE 표현식 사용
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-SQLite.CASE"></a>

SQLite `CASE` 표현식은 조건 목록을 평가하고 결과를 기반으로 표현식을 반환합니다. 다음 구문이 나와 있습니다.

```
    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
```

### 예제:
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-SQLite.Ex"></a>

**Example CASE 조건을 사용하여 대상 테이블에 새 문자열 열을 추가하는 방법**  
예를 들어, 다음 변환 규칙은 먼저 대상 테이블 `employee`에 새 문자열 열 `emp_seniority`를 추가합니다. 급여 열에 SQLite `round` 함수를 사용하고 이 때 급여가 20,000과 같거나 이를 초과하는지 확인하는 CASE 조건을 함께 적용합니다. 값이 맞으면 해당 열에 값 `SENIOR`이 적용되고 다른 모든 항목은 해당 값 `JUNIOR`를 갖습니다.  

```
  {
      "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
      }

  }
```

**Example SUBSTR 함수를 사용하여 대상 테이블에 새 문자열 열을 추가하는 방법**  
다음 예제 변환 규칙은 SQLite 연산자 또는 함수를 사용하여 열에 데이터를 정의하는 새 문자열 열을 추가합니다. 이 접근 방식에는 SQLite 함수를 사용하여 Postgresql 대상 테이블에 삽입하기 전에 Oracle에서 UUID 형식으로 로드된 GUID 데이터를 변환하는 작업이 포함됩니다.  
다음 규칙은 SQLite 하위 문자열(SUBSTR), 16진수 함수(HEX) 및 소문자(LOWER) 함수를 사용하여 GUID 데이터를 하이픈으로 구분된 여러 그룹, 특히 8자리 그룹과 4자리 그룹 3개, 12자리 그룹 12자리 그룹으로 나눕니다. 총 32자리는 128비트를 나타냅니다.  
다음은 변환 규칙을 통한 대상 사후 처리에 대한 샘플 소스 데이터 및 출력입니다.  
**소스 테이블(Oracle GUID 형식)**    
T\$1COL2  

```
06F6949D234911EE80670242AC120002
1A2B3C4D5E6F11EE80670242AC120003
F5E4D3C2B1A011EE80670242AC120004
```
**대상 테이블(PostgreSQL UUID 형식)**    
T\$1COL2\$1TMP  

```
06f6949d-2349-11ee-8067-0242ac120002
1a2b3c4d-5e6f-11ee-8067-0242ac120003
f5e4d3c2-b1a0-11ee-8067-0242ac120004
```

```
{
  "rule-type": "transformation",
  "rule-id": "2",
  "rule-name": "2",
  "rule-action": "add-column",
  "rule-target": "column",
  "object-locator": {
    "schema-name": "SPORTS",
    "table-name": "TEST_TBL_2"
  },
  "value": "t_col2_tmp",
  "expression": "CASE LOWER(SUBSTR(HEX($T_COL2), 1, 8) || '-' || SUBSTR(HEX($T_COL2), 9, 4) || '-' || SUBSTR(HEX($T_COL2), 13, 4) || '-' || SUBSTR(HEX($T_COL2), 17, 4) || '-' || SUBSTR(HEX($T_COL2), 21, 12)) WHEN '----' THEN NULL ELSE LOWER(SUBSTR(HEX($T_COL2), 1, 8) || '-' || SUBSTR(HEX($T_COL2), 9, 4) || '-' || SUBSTR(HEX($T_COL2), 13, 4) || '-' || SUBSTR(HEX($T_COL2), 17, 4) || '-' || SUBSTR(HEX($T_COL2), 21, 12)) END",
  "data-type": {
    "type": "string",
    "length": 60
  }
}
```

**Example 대상 테이블에 새 날짜 열 추가**  
다음 예에서는 대상 테이블 `employee`에 새 날짜 열 `createdate`를 추가합니다. SQLite 날짜 함수 `datetime`을 사용하면 삽입된 각 행에 대해 새로 생성된 테이블에 날짜가 추가됩니다.  

```
  {
      "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
      }
  }
```

**Example 대상 테이블에 새 숫자 열 추가**  
다음 예에서는 대상 테이블 `employee`에 새 숫자 열 `rounded_emp_salary`를 추가합니다. SQLite `round` 함수를 사용하여 반올림된 급여를 추가합니다.  

```
  {
      "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"
      }
  }
```

**Example 해시 함수를 사용하여 대상 테이블에 새 문자열 열을 추가하는 방법**  
다음 예에서는 대상 테이블 `employee`에 새 문자열 열 `hashed_emp_number`를 추가합니다. SQLite `hash_sha256(x)` 함수는 소스 열 `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
      }
  }
```

## 표현식을 사용하여 대상 테이블에 메타데이터 추가
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions-Metadata"></a>

다음 표현식을 사용하여 대상 테이블에 메타데이터 정보를 추가할 수 있습니다.
+ `$AR_M_SOURCE_SCHEMA` – 소스 스키마의 이름입니다.
+ `$AR_M_SOURCE_TABLE_NAME` – 소스 테이블의 이름입니다.
+ `$AR_M_SOURCE_COLUMN_NAME` – 소스 테이블의 열 이름입니다.
+ `$AR_M_SOURCE_COLUMN_DATATYPE` – 소스 테이블 내 열의 데이터 형식입니다.

**Example 소스의 스키마 이름을 사용하여 스키마 이름에 대한 열을 추가하는 방법**  
다음 예에서는 소스의 스키마 이름을 사용하여 대상에 `schema_name`이라는 새 열을 추가합니다.  

```
  {
      "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
      }
  }
```