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번째 줄에 있는 참조는 누락된 참조로 표시됩니다.