SnowConvert AI - 누락된 오브젝트 보고서¶
“누락된 오브젝트”란 무엇인가요?¶
누락된 오브젝트는 코드 단위에서 참조하는 소스 코드 내에서 누락된 DDL 정의를 가리키는 용어입니다. 아래 테이블은 지원되는 각 언어에서 어떤 요소에 오브젝트가 누락될 수 있는지 보여줍니다.
오브젝트 |
Teradata |
Oracle |
Transact-SQL |
Redshift |
BigQuery |
Spark |
Databricks |
Hive |
Vertica |
PostgreSQL |
Greenplum |
Netezza |
Azure Synapse |
IBM DB2 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
테이블 |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
뷰 |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
절차 |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
함수 |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
매크로 |
✓ |
|||||||||||||
패키지 함수 |
✓ |
|||||||||||||
패키지 프로시저 |
✓ |
|||||||||||||
*패키지 |
✓ |
|||||||||||||
조인 인덱스 |
✓ |
|||||||||||||
색인 |
✓ |
|||||||||||||
동의어 |
✓ |
|||||||||||||
데이터베이스 링크 |
✓ |
|||||||||||||
타입 |
✓ |
✓ |
✓ |
✓ |
||||||||||
구체화된 뷰 |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
트리거 |
✓ |
✓ |
✓ |
✓ |
||||||||||
시퀀스 |
✓ |
✓ |
✓ |
✓ |
||||||||||
제약 조건 |
✓ |
✓ |
✓ |
참고
위 섹션에 별표(‘*’)가 목록에 있는 경우 상수, 변수 또는 커서와 같이 DDL 문으로 간주되지 않는 속성을 오브젝트 자체에서 호출하는 데 사용되는다는 의미입니다.
어디서 찾을 수 있나요?¶
누락된 오브젝트 보고서는 변환의 출력 폴더에 있는 “reports” 폴더에서 찾을 수 있습니다. 파일 이름 자체가 _”MissingObjectReferences”_로 시작하므로 쉽게 위치를 찾을 수 있습니다.
파일 형식은 .CSV 입니다.
어떤 정보가 포함되어 있나요?¶
누락된 오브젝트 보고서에는 변환하는 동안 발견된 모든 누락된 오브젝트에 대한 다음 정보가 포함되어 있습니다.
열 |
설명 |
|---|---|
PartitionKey |
변환의 고유 식별자입니다. |
FileName |
오브젝트가 위치한 파일의 이름입니다. |
Caller_CodeUnit |
누락된 요소를 참조하는 코드 단위 유형입니다. |
Caller_CodeUnit_Database |
누락된 요소를 참조하는 코드 단위가 배포된 데이터베이스입니다. 현재로서는 SQL 서버 오브젝트만 데이터베이스를 가질 수 있습니다. |
Caller_CodeUnit_Schema |
누락된 요소를 참조하는 코드 단위가 배포되는 스키마입니다. |
Caller_CodeUnit_Name |
누락된 요소를 참조하는 코드 단위의 이름입니다. |
Caller_CodeUnit_FullName |
누락된 요소를 참조하는 코드 단위의 정규화된 이름입니다. |
Referenced_Element_Database |
누락된 요소가 배포된 데이터베이스입니다. 현재로서는 SQL 서버 오브젝트만 데이터베이스를 가질 수 있습니다. |
Referenced_Element_Schema |
누락된 요소가 배포된 스키마입니다. |
Referenced_Element_Name |
누락된 요소의 이름입니다. |
Referenced_Element_FullName |
누락된 요소의 정규화된 이름입니다. |
라인 |
참조가 위치한 파일 내부의 라인 번호입니다. |
Relation_Type |
호출자 코드 단위와 MISSING 참조를 통해 사용되는 관계의 유형을 표시합니다. |
Known Issues¶
경고
.bteq와 같은 스크립트 파일에 사용되는 셸 파일에 정의된 변수는 해당 정의가 SnowConvert AI에서 처리하는 입력 파일의 일부가 아니므로 누락된 오브젝트로 간주됩니다. 예를 들어, myDB 변수가 셸 파일에 정의되어 있지만 SnowConvert AI에 대한 입력의 일부가 아닌 파일입니다. bteq 파일만 처리되므로 5번째 줄이 누락된 참조로 표시됩니다.
export myDB=exampleDatabase
bteq < example.bteq
.LABEL EX_SQE
create multiset volatile table DR as
select * from ${myDB}.myTable;
경고
패키지를 분할하여 Oracle 워크로드를 전처리하면 패키지의 스키마가 추출된 오브젝트에 지정되지 않은 경우 추가로 누락된 참조가 발생할 수 있습니다.
원본 코드
CREATE package Schema1.Package1
IS
CREATE TABLE Table1 (
col1 INTEGER
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
END
이 경우 Table1 은 Schema1 내에 자동으로 생성되므로 9번째 라인의 참조가 올바르게 확인됩니다. 그러나 마이그레이션 전에 패키지 분할 프로세스가 실행되고 그 결과 파일이 다음과 같은 경우:
패키지 분할 프로세스 후 수정된 코드
CREATE TABLE Table1 (
col1 INTEGER1
);
CREATE PROCEDURE Proc1
BEGIN
SELECT * FROM Schema1.Table1;
END
Table1 이 스키마 Schema1 내에서 명시적으로 생성되지 않았기 때문에 파일 Schema1_Proc1.sql 의 3번째 줄에 있는 참조는 누락된 참조로 표시됩니다.