SnowConvert AI - Teradata - DDL¶
이 섹션에서는 데이터 정의 언어 요소의 변환 참조에 대한 설명서를 확인할 수 있습니다.
인덱스¶
INDEX 문을 Snowflake로 변환하기 위한 변환 참조
경고
현재 _ Create Index _ 문은 변환되지 않지만, 구문 분석 중입니다. 또한 소스 코드에 Create index 문이 있는 경우 _ Assessment Report _에서 이를 설명합니다.
Create Index의 예
Teradata 입력¶
참고
아키텍처상의 이유로 Snowflake는 인덱스를 지원하지 않으므로, SnowConvert AI는 인덱스 생성과 관련된 모든 코드를 제거합니다. Snowflake는 모든 테이블에 대해 DML 작업의 성능 속도를 높이는 데 도움이 되는 마이크로 파티션을 자동으로 생성하므로 사용자는 이러한 마이크로 파티션의 생성 및 관리에 대해 걱정할 필요가 없습니다.
일반적으로는 이 정도만으로도 쿼리 성능이 매우 우수하지만, 데이터 클러스터링 키를 생성하여 성능을 향상시킬 수 있는 방법이 있습니다. 마이크로 파티션과 데이터 클러스터링에 대한 자세한 내용은 Snowflake의 공식 페이지 에서 확인할 수 있습니다.
조인 인덱스¶
설명 ¶
SnowConvert AI에서 Teradata 조인 인덱스는 Snowflake 동적 테이블로 변환됩니다. 동적 테이블을 올바르게 구성하려면 두 가지 필수 매개 변수인 TARGET_LAG 및 WAREHOUSE를 정의해야 합니다. 구성 옵션에서 이러한 매개 변수를 지정하지 않은 경우, SnowConvert AI는 아래 예에서 볼 수 있듯이, 기본적으로 변환 중에 미리 할당된 값으로 설정됩니다.
For more information, see the Teradata Join Indexes documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
샘플 소스 패턴¶
Teradata
조인 인덱스
Snowflake
동적 테이블
Known Issues¶
현재 알려진 오류가 감지되지 않았습니다.
스키마¶
설명 ¶
기본 구문은 동일하게 유지되므로 CREATE SCHEMA 문을 Teradata에서 Snowflake로 변환하는 것은 간단합니다.
샘플 소스 패턴¶
Teradata
조인 인덱스
Snowflake
동적 테이블
Known Issues¶
CREATE SCHEMA 의 WITH 속성¶
Teradata의 CREATE SCHEMA 문과 연결된 WITH 속성은 사용 가능한 동등한 기능이 없으므로 Snowflake에서 지원되지 않습니다.
Teradata
조인 인덱스
Snowflake
동적 테이블
관련 EWIs¶
SSC-EWI-0073: 보류 중 함수 동등성 검토.
뷰¶
Teradata VIEW를 Snowflake로 변환하기 위한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명 ¶
Teradata의 VIEW 문은 Snowflake VIEW 구문으로 변환됩니다.
For more information, see the Teradata VIEW documentation.
샘플 소스 패턴¶
뷰 변환 생성하기¶
Teradata
뷰¶
Snowflake
뷰¶
사용자 지정 스키마 태그¶
사용자 정의 스키마는 뷰 지정 앞의 설명 섹션에 <sc-view>SCHEMANAME.VIEWNAME</sc-view> 같이 스키마 값과 뷰 이름만 마침표 ‘.’로 구분된 “sc-view”라는 XML 태그를 사용하여 지정합니다.
사용자 지정 스키마가 뷰 한정자로 사용되며, 뷰의 이름과 FROM 쿼리 및 내부 쿼리에서 참조되는 모든 오브젝트가 해당 사용자 지정 스키마를 사용합니다. 따라서 이름은 같지만 사용자 지정 태그가 다른 여러 개의 뷰가 있을 수 있습니다. 예: 이름이 같은 2개의 뷰는 사용자 지정 스키마 태그 정보를 사용하여 변환을 수행합니다.
Teradata¶
뷰¶
Snowflake¶
사용자 정의 스키마 이름 MySchema, 사용자 정의 데이터베이스 이름 MyDatabase 또는 변환 설정에서 사용자 정의 데이터베이스 또는 스키마를 선택하지 않은 경우에 따라 Snowflake에 대한 변환이 달라집니다.
Custom Schema¶
Custom Database¶
선택되지 않음¶
Known Issues¶
1. Locking row for access logic difference¶
Snowflake에서 오브젝트 및 요소에 대한 액세스는 사용자 및 권한을 기반으로 합니다.
관련 EWIs¶
SSC-FDM-0007: 종속성이 누락된 요소입니다.
SSC-FDM-0019: Semantic information could not be loaded.
테이블¶
Teradata TABLE를 Snowflake로 변환하기 위한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명 ¶
Teradata의 TABLE 문은 Snowflake TABLE 구문으로 변환됩니다.
For more information, see the Teradata CREATE TABLE documentation.
샘플 소스 패턴¶
간단한 테이블 생성¶
Teradata
테이블¶
Snowflake
테이블¶
테이블 종류 절 - SET 및 MULTISET¶
Teradata의 kind 절은 중복 행이 허용되는지 여부(MULTISET) 또는 허용되지 않는지 여부(SET)를 결정합니다.
Teradata¶
테이블¶
Snowflake¶
테이블¶
휘발성 및 글로벌 임시 테이블¶
teradata의 휘발성 및 글로벌 임시 테이블은 데이터의 임시 저장소에 사용됩니다. 글로벌 임시 테이블의 테이블 정의(DDL)는 Data Dictionary에 유지되는 반면, 휘발성 테이블 정의는 저장되지 않는다는 점에서 차이가 있습니다.
Teradata¶
테이블¶
Snowflake¶
테이블¶
데이터 포함 및 데이터 미포함 옵션¶
Teradata
테이블¶
Snowflake
테이블¶
Snowflake의 예약 & 제한된 키워드¶
SnowConvert AI는 예약 키워드와 관련된 문제를 해결하여 Snowflake로의 원활한 SQL 마이그레이션을 지원합니다. Snowflake의 예약 및 제한 키워드 설명서에 따라, 특정 키워드는 특별한 처리 없이 열 이름, 테이블 이름 또는 별칭으로 사용할 수 없습니다. SnowConvert AI에는 이러한 경우 SQL 코드 호환성을 보장하는 기능이 포함되어 있습니다.
ANSI 키워드는 열 이름으로 예약됨
ANSI 또는 Snowflake 예약 키워드와 일치하는 열 이름의 경우, SnowConvert AI는 Snowflake의 구문 규칙을 준수하기 위해 자동으로 열 이름을 큰따옴표(")로 묶습니다. 이러한 조정을 통해 해당 열 이름의 쿼리가 수동 개입 없이 Snowflake에서 올바르게 컴파일됩니다.
예:
테이블¶
Snowflake
테이블¶
Snowflake 전용 예약 키워드
Columns that match Snowflake-specific reserved keywords (for example, CONSTRAINT, CURRENT_DATE, CURRENT_TIME) may still cause compilation issues even when wrapped in quotes. SnowConvert AI detects these instances and generates a warning with code SSC-EWI-0045, prompting users to review and potentially rename these columns for compatibility.
예:
테이블¶
Snowflake
테이블¶
Known Issues¶
1. Create table options not supported¶
“단순 Create Table” 예제에서 볼 수 있듯이 Snowflake는 Teradata 테이블 생성하기 옵션을 지원하지 않습니다. 제거됩니다.
2. Partition by performance issues¶
“단순 Create Table” 예제에서는 성능 고려 사항으로 인해 partition by 문이 제거되었습니다.
3. Primary Index moved¶
Teradata에서는 기본 인덱스 제약 조건이 create table 문 외부에 선언되지만, Snowflake에서는 “Simple Create Table” 예제에서와 같이 내부에 있어야 합니다.
4. SET semantics not supported¶
“테이블 종류 절 - SET 및 MULTISET” 예제에서 볼 수 있듯이, Snowflake는 Teradata의 SET 의미 체계를 지원하지 않습니다. 제거됩니다.
5. Global Temporary table option not supported¶
“휘발성 및 글로벌 임시 테이블” 예제에서 볼 수 있듯이, Snowflake는 Teradata의 글로벌 임시 테이블 옵션을 지원하지 않습니다. 제거됩니다.
6. Compress unsupported¶
COMPRESS (값1. 값2, 값3) 이 지원되지 않으므로 제거됩니다.
7. On commit unsupported¶
On commit 이 지원되지 않아 제거되었습니다.
8. Block compression unsupported¶
Block compression 이 지원되지 않아 제거되었습니다.
9. Normalize unsupported¶
Normalize 가 지원되지 않아 제거되었습니다.
관련 EWIs¶
SSC-FDM-0009: GLOBAL TEMPORARY TABLE 기능은 지원되지 않습니다.
SSC-FDM-0019: Semantic information could not be loaded.
SSC-FDM-TD0024: 테이블 설정 기능은 지원되지 않습니다.
SSC-PRF-0007: CLUSTER BY 성능을 검토합니다.
SSC-EWI-0045: 열 이름이 Snowflake 예약 키워드입니다.
WITH DEFAULT¶
열 정의의 Teradata WITH DEFAULT 절을 Snowflake로 변환하기 위한 변환 참조
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명 ¶
Teradata의 WITHDEFAULT 절은 값 없이 삽입되는 열에 시스템 기본값을 설정합니다. 이 값은 일반적으로 0 또는 비어 있는 것과 같습니다.
구문:¶
다음 테이블에는 Teradata의 데이터 타입, Snowflake에서 해당 유형 및 지원되는 경우 설정할 기본값이 나와 있습니다.
| Teradata | Snowflake | Default Value |
|---|---|---|
| BLOB[(n)] | BYTE | NOT SUPPORTED |
| BYTE[(n)] | BYTE | NOT SUPPORTED |
| VARBYTE[(n)] | BYTE | NOT SUPPORTED |
| BIGINT | BIGINT | 0 |
| BYTEINT | BYTEINT | 0 |
| DECIMAL [(n[,m])] | DECIMAL | 0 |
| DOUBLE PRECISION | DOUBLE PRECISION | 0 |
| FLOAT | FLOAT | 0 |
| INTEGER | INTEGER | 0 |
| NUMBER(n[,m]) | NUMBER | 0 |
| NUMBER[(*[,m])] | NUMBER | 0 |
| NUMERIC [(n[,m])] | NUMERIC | 0 |
| REAL | REAL | 0 |
| SMALLINT | SMALLINT | 0 |
| DATE | DATE | CURRENT_DATE |
| TIME [(n)] | TIME | CURRENT_TIME |
| TIMESTAMP [(n)] | TIMESTAMP | CURRENT_TIMESTAMP |
| TIMESTAMP WITH TIME ZONE | TIMESTAMP_TZ | LOCALTIMESTAMP |
| INTERVAL DAY [(n)] | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO HOUR | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO MINUTE | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO SECOND | VARCHAR(21) | '0DAY' |
| INTERVAL HOUR [(n)] | VARCHAR(21) | '0HOUR' |
| INTERVAL HOUR [(n)] TO MINUTE | VARCHAR(21) | '0HOUR' |
| INTERVAL HOUR [(n)] TO SECOND | VARCHAR(21) | '0HOUR' |
| INTERVAL MINUTE [(n)] | VARCHAR(21) | '0MINUTE' |
| INTERVAL MINUTE [(n)] TO SECOND [(m)] | VARCHAR(21) | '0MINUTE' |
| INTERVAL MONTH | VARCHAR(21) | '0MONTH' |
| INTERVAL SECOND [(n,[m])] | VARCHAR(21) | '0SECOND' |
| INTERVAL YEAR [(n)] | VARCHAR(21) | '0YEAR' |
| INTERVAL YEAR [(n)] TO MONTH | VARCHAR(21) | '0YEAR' |
| CHAR[(n)] | CHAR | '' |
| CHARACTER(n) CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| CLOB | - | NOT SUPPORTED |
| CHAR VARYING(n) | VARCHAR | '' |
| LONG VARCHAR | - | NOT SUPPORTED |
| LONG VARCHAR CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| VARCHAR(n) | VARCHAR | '' |
| VARCHAR(n) CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| PERIOD(DATE) | VARCHAR(24) | NOT SUPPORTED |
| PERIOD(TIME [(n)]) | VARCHAR(24) | NOT SUPPORTED |
| PERIOD(TIMESTAMP [(n)]) | VARCHAR(24) | NOT SUPPORTED |
샘플 소스 패턴¶
Teradata¶
쿼리¶
Snowflake ¶
쿼리¶
Known Issues¶
1. Unsupported types¶
설명 테이블의 테이블에 표시된 것처럼 일부 유형은 지원되지 않으며 WITHDEFAULT 절을 변환할 때 기본값이 설정되지 않습니다.
관련 EWIs¶
SSC-EWI-0021: Snowflake에서 지원되지 않습니다.
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
CREATE MACRO¶
Teradata CREATE MACRO를 Snowflake Scripting으로 변환하기 위한 변환 참조
설명 ¶
Teradata CREATE MACRO 는 일반적으로 사용되거나 복잡한 작업을 수행하는 1개 이상의 문을 정의하여 동일한 문 시퀀스를 여러 번 작성하지 않도록 합니다. 매크로는 EXECUTE 문으로 호출하면 실행됩니다.
For more information, see the Teradata CREATE MACRO documentation.
샘플 소스 패턴 ¶
설정 데이터¶
이 섹션에 있는 샘플 패턴을 실행하려면 다음 코드가 필요합니다.
Teradata¶
Snowflake¶
기본 매크로 ¶
Snowflake에는 매크로 오브젝트가 없으므로 변환 도구는 Teradata 매크로를 Snowflake Scripting 저장 프로시저로 변환합니다. 또한 반환된 결과 세트의 기능을 복제하기 위해 Snowflake Scripting에서는 매크로에서 데이터 세트를 반환해야 하는 쿼리가 RESULTSET 변수에 할당된 다음 반환됩니다.
Teradata ¶
쿼리¶
결과¶
Snowflake Scripting <a href=”#expected-code”id=”expected-code”> ¶
쿼리¶
결과¶
매크로가 다른 매크로를 호출하는 방법 ¶
SnowConvert AI는 매크로가 다른 매크로를 호출하고 전이성을 통해 Snowflake의 RESULT_SCAN(LAST_QUERY_ID())에서 결과를 가져와 결과 세트가 반환되는 시나리오를 지원합니다.
Teradata¶
쿼리¶
결과¶
Snowflake Scripting ¶
쿼리¶
결과¶
결과 세트가 없는 매크로¶
모든 매크로가 결과 세트를 반환하도록 되어 있는 것은 아닙니다. 언급된 시나리오도 지원됩니다.
Teradata¶
쿼리¶
결과¶
Snowflake Scripting ¶
쿼리¶
결과¶
매크로는 여러 결과 세트를 반환합니다¶
Teradata에서 매크로는 단일 매크로에서 2개 이상의 결과 세트를 반환할 수 있습니다.
Snowflake Scripting 프로시저에서는 프로시저당 1개의 결과 세트만 반환할 수 있습니다. Teradata 동작을 복제하기 위해 반환할 결과 세트가 2개 이상 있는 경우 임시 테이블에 저장됩니다. Snowflake Scripting 프로시저는 임시 테이블의 이름이 포함된 배열을 반환합니다.
Teradata¶
쿼리¶
결과 세트 1¶
결과 세트 2¶
Snowflake Scripting ¶
쿼리¶
결과 세트 1¶
Visualize Result Sets¶
Snowflake에서 위의 프로시저를 실행하면 임시 테이블 이름이 포함된 배열이 반환됩니다.
[ “RESULTSET_93D50CBB_F22C_418A_A88C_4E1DE101B500”, “RESULTSET_6BDE39D7_0554_406E_B52F_D9E863A3F15C”]
Teradata에서와 같이 결과 세트를 표시하려면 다음 쿼리를 실행해야 합니다.
쿼리¶
결과 세트 1¶
결과 세트 2¶
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs¶
CREATE PROCEDURE¶
Teradata CREATE PROCEDURE를 Snowflake Scripting으로 변환하기 위한 변환 참조
설명
Teradata CREATE PROCEDURE 및 REPLACE PROCEDURE 문은 저장 프로시저 구현을 생성하거나 대체하고 컴파일합니다.
For more information, see the Teradata CREATE PROCEDURE and REPLACE PROCEDURE documentation.
샘플 소스 패턴 ¶
설정 데이터¶
이 섹션에 있는 샘플 패턴을 실행하려면 다음 코드가 필요합니다.
Teradata¶
Snowflake¶
기본 프로시저 <a href=”#example-code”id=”example-code”> ¶
Teradata ¶
쿼리¶
결과¶
Snowflake Scripting <a href=”#expected-code”id=”expected-code”> ¶
쿼리¶
결과¶
매개 변수 단일 선택 ¶
Teradata¶
쿼리¶
결과¶
Snowflake Scripting ¶
쿼리¶
결과¶
매개 변수 다중 선택 ¶
Teradata¶
쿼리¶
결과¶
Snowflake Scripting ¶
쿼리¶
결과¶
동적 결과 세트가 있는 다매개 변수 다중 선택 ¶
Teradata¶
쿼리¶
결과¶
 (1).png)
Snowflake Scripting ¶
쿼리¶
알려진 문제 ¶
1. SQL 데이터 액세스
기본적으로 Snowflake 프로시저는 데이터 읽기 또는 수정 문을 포함한 모든 종류의 SQL 문의 실행을 지원하므로 SQL 데이터 액세스 절은 관련이 없습니다. 프로시저를 변환할 때 이 절은 무시됩니다.
2. 평가 보고서의 최상위 오브젝트
저장 프로시저 내부의 요소(임시 테이블 또는 뷰)는 평가 보고서에서 최상위 오브젝트로 계산됩니다. SnowConvert AI 팀은 현재 이 시나리오에 대한 수정 사항을 마련하기 위해 노력하고 있습니다.
관련 EWIs¶
SSC-EWI-0073: 보류 중 함수 동등성 검토.
SSC-FDM-0020: 여러 결과 세트가 임시 테이블에 반환됩니다.