SnowConvert AI - Teradata - 데이터 마이그레이션 고려 사항¶
이 섹션에서는 Teradata에서 Snowflake로 데이터를 마이그레이션할 때 중요한 고려 사항에 대해 설명합니다.
참고
이는 현재 진행 중인 작업입니다.
Teradata에서 Snowflake로 데이터를 마이그레이션할 때는 데이터베이스 간의 기능적 차이점을 고려하는 것이 중요합니다. 이 페이지에서는 데이터 마이그레이션을 위한 최상의 제안을 소개합니다.
다음 정보를 검토하십시오.
UNION ALL 데이터 마이그레이션¶
UNION ALL에 대한 데이터 마이그레이션 고려 사항
UNION ALL 은 여러 결과 집합을 조합할 수 있는 SQL 연산자입니다. 구문은 다음과 같습니다.
자세한 내용은 다음 Teradata 설명서를 참조하십시오.
열 크기 차이¶
연산자가 Snowflake에서 동일한 연산자로 변환되더라도 기능적 동등성에는 세부적인 차이가 있을 수 있습니다. 예를 들어, 열 크기가 다른 여러 열을 합치는 경우입니다. 첫 번째 SELECT 문에 열에 공백이 적은 경우 Teradata는 값을 잘라냅니다.
Teradata 동작¶
참고
ANSI 및 TERA 세션 모드에서도 동작이 동일합니다.
이 예제에서 다음 입력은 Teradata 동작을 보여줍니다.
Teradata 설정 데이터¶
Snowflake 설정 데이터¶
Case 1 - one single column: UNION ALL for a column VARCHAR(20) over a column VARCHAR(10)¶
SuccessPlaceholder
이 경우 기능적 동등성은 동일합니다
Teradata 입력¶
Teradata 출력¶
Snowflake 입력¶
Snowflake 출력¶
Case 2 - one single column: UNION ALL for a column VARCHAR(10) over a column VARCHAR(20)¶
위험
In this case, the functional equivalence is not the same.
다음 경우는 Snowflake에서 함수 동등성을 나타내지 않습니다. 열 값은 Teradata 샘플에서와 같이 잘라내야 합니다.
Teradata 입력¶
Teradata 출력¶
Snowflake 입력¶
Snowflake 출력¶
동일한 기능을 이용하기 위한 해결 방법
In this case, the size of the column of the table2 is 10 and the table1 is 20. So, the size of the first column in the query should be the element to complete the LEFT() function used here. For more information, see the Snowflake LEFT function documentation.
Snowflake 입력¶
Snowflake 출력¶
Case 3 - multiple columns - same size by table: UNION ALL for columns VARCHAR(20) over columns VARCHAR(10)¶
이 경우 다음과 같이 새 데이터를 설정해야 합니다.
Teradata 설정 데이터¶
Snowflake 설정 데이터¶
새 테이블과 데이터가 생성되면 다음 쿼리를 평가할 수 있습니다.
참고
이 경우 기능적 동등성은 동일합니다
Teradata 입력¶
Teradata 출력¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcdefghijk |
t2 row 3 a |
t2 row 3 b |
value 2 abcdefghijk |
value 2 abcdefghijk |
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
Snowflake 입력¶
Snowflake 출력¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcdefghijk |
value 2 abcdefghijk |
value 2 abcdefghijk |
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
t2 row 3 a |
t2 row 3 b |
Case 4 - multiple columns - same size by table: UNION ALL for columns VARCHAR(10) over columns VARCHAR(20)¶
경고
In this case, the functional equivalence is not the same.
Teradata 입력¶
Teradata 출력¶
col1 |
col2 |
|---|---|
t2 row 3 a |
t2 row 3 b |
value 1 ab |
value 1 ab |
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
value 2 ab |
value 2 ab |
Snowflake 입력¶
Snowflake 출력¶
col1 |
col2 |
|---|---|
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
t2 row 3 a |
t2 row 3 b |
value 1 abcdefghijk |
value 1 abcdefghijk |
value 2 abcdefghijk |
value 2 abcdefghijk |
동일한 기능을 이용하기 위한 해결 방법
열의 두 번째 SELECT 에 열 크기를 적용하면 동일한 기능을 사용할 수 있습니다.
Snowflake 입력¶
Snowflake 출력¶
col1 |
col2 |
|---|---|
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
t2 row 3 a |
t2 row 3 b |
value 1 ab |
value 1 ab |
value 2 ab |
value 2 ab |
Case 5 - multiple columns - different sizes by table: UNION ALL for columns VARCHAR(10) over columns VARCHAR(20)¶
이 경우 다음과 같이 새 데이터를 설정해야 합니다.
Teradata 설정 데이터¶
Snowflake 설정 데이터¶
새 테이블과 데이터가 생성되면 다음 쿼리를 평가할 수 있습니다.
참고
이 경우 기능적 동등성은 동일합니다
Teradata 입력¶
Teradata 출력¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcd |
t2 row 3 a |
t2 3b |
value 2 abcdefghijk |
value 2 abcd |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
Snowflake 입력¶
Snowflake 출력¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcd |
value 2 abcdefghijk |
value 2 abcd |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
t2 row 3 a |
t2 3b |
Case 6 - multiple columns - different sizes by table: UNION ALL for columns VARCHAR(20), VARCHAR(10) over columns VARCHAR(10), VARCHAR(5)¶
경고
In this case, the functional equivalence is not the same.
Teradata 입력¶
Teradata 출력¶
col1 |
col2 |
|---|---|
t2 row 3 a |
t2 3b |
value 1 ab |
value |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
value 2 ab |
value |
Snowflake 입력¶
Snowflake 출력¶
col1 |
col2 |
|---|---|
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
t2 row 3 a |
t2 3b |
value 1 abcdefghijk |
value 1 abcd |
value 2 abcdefghijk |
value 2 abcd |
동일한 기능을 이용하기 위한 해결 방법
첫 번째 SELECT 에서 가장 작은 크기의 열은 두 번째 SELECT 에서 열의 크기를 결정하는 데 사용됩니다.
Snowflake 입력¶
Snowflake 출력¶
col1 |
col2 |
|---|---|
t2 row 3 a |
t2 3b |
value 1 ab |
value |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
value 2 ab |
value |
Case 7 - multiple columns expression - different sizes by table: UNION ALL for columns VARCHAR(20), VARCHAR(20) over columns VARCHAR(10), VARCHAR(10)¶
Use the data set up in Case 3 — Multiple columns — Same size by table. Once the new tables and data are created, the following query can be evaluated.
참고
이 경우 기능적 동등성은 동일합니다
Teradata 입력¶
Teradata 출력¶
col1 || col2 |
|---|
value 1 abcdefghijkvalue 1 abcdefghijk |
t2 row 3 at2 row 3 b |
value 2 abcdefghijkvalue 2 abcdefghijk |
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
Snowflake 입력¶
Snowflake 출력¶
col1 || col2 |
|---|
value 1 abcdefghijkvalue 1 abcdefghijk |
value 2 abcdefghijkvalue 2 abcdefghijk |
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
Case 8 - multiple columns expression - different sizes by table: UNION ALL for columns VARCHAR(20), VARCHAR(20) over columns VARCHAR(10), VARCHAR(10)¶
경고
이 경우에는 기능적인 차이가 있습니다.
Teradata 입력¶
Teradata 출력¶
col1 || col2 |
|---|
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
value 1 abcdefghijkv |
value 2 abcdefghijkv |
Snowflake 입력¶
Snowflake 출력¶
col1 || col2 |
|---|
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
value 1 abcdefghijkvalue 1 abcdefghijk |
value 2 abcdefghijkvalue 2 abcdefghijk |
동일한 기능을 이용하기 위한 해결 방법
The sum of the column sizes of the smaller column should be used in the LEFT function. For example, if the smaller column is VARCHAR(10), then the limit of the LEFT function should be 20 (10 + 10).
경고
If the first SELECT result is smaller, its sum would be used for the truncation of the values.
Snowflake 입력¶
Snowflake 출력¶
col1 || col2 |
|---|
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
value 1 abcdefghijkv |
value 2 abcdefghijkv |
열 크기 차이에 대한 기타 고려 사항¶
CHAR및VARCHAR은 동일하게 작동합니다.숫자 열은 다르게 작동할 수 있습니다. 숫자를 잘라낼 수 없으므로 Teradata 환경에서 오버플로가 발생합니다. 따라서 이러한 데이터 타입에는 적용되지 않습니다. 다음 예제를 검토하십시오.