SnowConvert AI - Missing Objects Report¶
“누락된 오브젝트”란 무엇인가요?¶
누락된 오브젝트는 코드 단위에서 참조하는 소스 코드 내에서 누락된 DDL 정의를 가리키는 용어입니다. 아래 테이블은 지원되는 각 언어에서 어떤 요소에 오브젝트가 누락될 수 있는지 보여줍니다.
Object |
Teradata |
Oracle |
Transact-SQL |
Redshift |
BigQuery |
Spark |
Databricks |
Hive |
Vertica |
PostgreSQL |
Greenplum |
Netezza |
Azure Synapse |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Table |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
View |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Procedure |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Function |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Macro |
✓ |
||||||||||||
Package Function |
✓ |
||||||||||||
Package Procedure |
✓ |
||||||||||||
*Package |
✓ |
||||||||||||
Join Index |
✓ |
||||||||||||
Index |
✓ |
||||||||||||
Synonym |
✓ |
||||||||||||
Database Link |
✓ |
||||||||||||
Type |
✓ |
✓ |
✓ |
✓ |
|||||||||
Materialized View |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
||
Trigger |
✓ |
✓ |
✓ |
✓ |
|||||||||
Sequence |
✓ |
✓ |
✓ |
✓ |
|||||||||
Constraint |
✓ |
✓ |
✓ |
참고
위 섹션에 별표(‘*’)가 목록에 있는 경우 상수, 변수 또는 커서와 같이 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 |
Shows the type of relation used through the caller code unit and the MISSING reference. |
Known Issues¶
경고
Variables defined in shell files used in script files like .bteq are considered missing objects because their definition is not part of the input files that SnowConvert AI processes. E.g. the myDB
variable is defined in the shell file but this is a file that is not part of the input for SnowConvert AI. Only the .bteq file will be processed and therefore, line 5 will be marked as a missing reference.
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번째 줄에 있는 참조는 누락된 참조로 표시됩니다.