기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
변환 규칙 표현식을 사용하여 열 내용 정의
변환 규칙 내에서 표현식을 사용하여 새 열과 기존 열의 내용을 정의할 수 있습니다. 예를 들어, 표현식을 사용하여 열을 추가하거나 소스 테이블 헤더를 대상에 복제할 수 있습니다. 표현식을 사용하여 대상 테이블의 레코드를 소스에서 삽입, 업데이트 또는 삭제된 것으로 플래그를 지정할 수도 있습니다.
주제
표현식을 사용하여 열 추가
변환 규칙에서 표현식을 사용하여 테이블에 열을 추가하려면 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 } } ] }
표현식을 사용하여 대상 레코드에 플래그 지정
변환 규칙에서 표현식을 사용하여 대상 테이블의 레코드를 소스 테이블에서 삽입, 업데이트 또는 삭제된 것으로 플래그를 지정할 수 있습니다. 표현식은 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 } }
표현식을 사용하여 소스 테이블 헤더 복제
기본적으로 소스 테이블의 헤더는 대상에 복제되지 않습니다. 복제할 헤더를 나타내려면 테이블 열 헤더를 포함하는 표현식과 함께 변환 규칙을 사용합니다.
표현식에서 다음 열 헤더를 사용할 수 있습니다.
헤더 | 지속적 복제의 값 | 전체 로드의 값 | 데이터 유형 |
---|---|---|---|
AR_H_STREAM_POSITION | 소스의 스트림 위치 값. 이 값은 소스 엔드포인트에 따라 시스템 변경 번호(SCN) 또는 로그 시퀀스 번호(LSN)일 수 있습니다. | 빈 문자열. | STRING |
AR_H_TIMESTAMP | 변경 시간을 나타내는 타임스탬프. | 데이터가 대상에 도달한 현재 시간을 나타내는 타임스탬프입니다. | DATETIME(크기 = 7) |
AR_H_COMMIT_TIMESTAMP | 커밋 시간을 나타내는 타임 스탬프. | 현재 시간을 나타내는 타임스탬프. | DATETIME(크기 = 7) |
AR_H_OPERATION | INSERT, UPDATE 또는 DELETE | INSERT | STRING |
AR_H_USER | 변경한 사용자에 대해 소스에서 제공되는 사용자 이름, ID 또는 기타 정보. 이 헤더는 SQL Server 및 Oracle(버전 11.2.0.3 이상) 소스 엔드포인트에서만 지원됩니다. |
객체에 적용할 변환. 변환 규칙 작업은 대소문자를 구분합니다. | STRING |
AR_H_CHANGE_SEQ | 타임스탬프와 자동 증분 숫자로 구성된 소스 데이터베이스의 고유한 증분 숫자입니다. 값은 소스 데이터베이스 시스템에 따라 달라집니다. | 빈 문자열. | STRING |
다음 예에서는 소스의 스트림 위치 값을 사용하여 대상에 새 열을 추가합니다. 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_id 번호입니다.
{ "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 함수를 사용하여 표현식 작성
테이블 설정을 사용하여 지정된 작업에서 선택한 테이블 또는 뷰에 적용할 설정을 지정합니다. 테이블 설정 규칙은 선택 사항입니다.
참고
MongoDB 및 DocumentDB 데이터베이스는 테이블과 뷰의 개념 대신 데이터 레코드를 컬렉션에 함께 수집된 문서로 저장합니다. 따라서 MongoDB 또는 DocumentDB 소스에서 마이그레이션할 때는 테이블과 뷰보다는 선택한 컬렉션에 대한 병렬 로드 설정의 범위 세그먼트화 유형을 고려하십시오.
다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 문자열 함수를 찾을 수 있습니다.
문자열 함수 | 설명 |
---|---|
|
이 |
|
이 |
|
이 |
|
이 |
|
이 |
|
이
|
trim( |
이 |
다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 LOB 함수를 찾을 수 있습니다.
LOB 함수 | 설명 |
---|---|
|
이 |
|
이 |
|
이 |
다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 numeric 함수를 찾을 수 있습니다.
Numeric 함수 | 설명 |
---|---|
|
이 |
|
이 |
|
이 |
|
다중 인수
|
|
다중 인수
|
다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 NULL 체크 함수를 찾을 수 있습니다.
NULL 체크 함수 | 설명 |
---|---|
|
이 |
|
이 |
|
|
다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 날짜 및 시간 함수를 찾을 수 있습니다.
날짜 및 시간 함수 | 설명 |
---|---|
|
이 |
|
이 |
|
이 |
|
이 |
|
이
|
다음은 변환 규칙 표현식을 작성하는 데 사용할 수 있는 해시 함수를 찾을 수 있습니다.
해시 함수 | 설명 |
---|---|
|
이 표현식에서 |
CASE 표현식 사용
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
예제:
예 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 } }
예 대상 테이블에 새 날짜 열 추가
다음 예에서는 대상 테이블 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 } }
예 대상 테이블에 새 숫자 열 추가
다음 예에서는 대상 테이블 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" } }
예 해시 함수를 사용하여 대상 테이블에 새 문자열 열을 추가하는 방법
다음 예에서는 대상 테이블 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 } }
표현식을 사용하여 대상 테이블에 메타데이터 추가
다음 표현식을 사용하여 대상 테이블에 메타데이터 정보를 추가할 수 있습니다.
-
$AR_M_SOURCE_SCHEMA
– 소스 스키마의 이름입니다. -
$AR_M_SOURCE_TABLE_NAME
– 소스 테이블의 이름입니다. -
$AR_M_SOURCE_COLUMN_NAME
– 소스 테이블의 열 이름입니다. -
$AR_M_SOURCE_COLUMN_DATATYPE
– 소스 테이블 내 열의 데이터 형식입니다.
예 소스의 스키마 이름을 사용하여 스키마 이름에 대한 열을 추가하는 방법
다음 예에서는 소스의 스키마 이름을 사용하여 대상에 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 } }