SnowConvert: 평가 보고서

일반 요약

이 문서의 목적은 사용자가 SnowConvert 변환 도구의 요약 결과를 이해할 수 있도록 지침을 제공하는 것입니다. 이 문서는 반환된 다양한 메트릭과 이러한 메트릭을 사용하여 달성된 자동화 수준과 출력 코드를 기능적으로 동등한 Snowflake 코드로 만들기 위해 필요한 수작업의 양을 결정하는 방법을 안내합니다.

이미지

이 문서에 제시된 대부분의 개념은 보고서의 메인 페이지에 이미 설명되어 있습니다. 하지만 위 이미지의 가장 중요한 정보에 대한 다른 유용한 정보는 다음과 같습니다.

  • 총 구문 분석 오류: 변환 도구가 변환 중인 소스 언어에서 구문적으로 올바른 요소로 인식할 수 없는 텍스트 조각을 발견한 횟수입니다. 구문 분석 오류는 작거나 큰 영향을 미칠 수 있습니다. 구문 분석 오류의 영향을 받는 LOC 의 수와 전체 워크로드에서 차지하는 비중을 파악하는 것이 중요합니다. 인코딩 문제 또는 워크로드에 약간의 준비가 필요하기 때문에 구문 분석 오류가 발생할 수 있습니다.

  • 코드 변환율: 변환률은 전체 소스 코드 중 SnowConvert 가 기능적으로 동등한 Snowflake 코드로 성공적으로 변환된 비율입니다. 도구가 지원되지 않는 요소, 즉 입력 소스 코드에서 Snowflake로 변환되지 않은 조각을 식별할 때마다 변환율에 영향을 미칩니다.

  • 식별된 오브젝트: SnowConvert 가 식별한 모든 최상위 레벨 DDL 오브젝트(테이블, 뷰, 프로시저 등)의 개수입니다. 오브젝트에 구문 분석 오류가 있는 경우 식별된 오브젝트가 아닙니다. \ 예: 첫 번째 오브젝트 from line #1 to line #6. 구문 분석에 오류가 있는 것 같으므로 SnowConvert 는 이를 오브젝트로 식별할 수 없습니다.

변환율 모드

앞서 언급했듯이 구문 분석 오류 또는 Snowflake에서 지원하지 않는 요소로 인해 지원되지 않는 것으로 표시되면 변환율이 불이익을 받습니다. 지원되지 않는 각 요소에 대해 얼마나 많은 변환율이 처벌되는지는 선택한 코드 단위에 따라 달라지며, 문자 또는 라인의 두 가지 단위를 사용할 수 있습니다.

코드 문자를 사용한 변환율

코드 문자를 선택하면 입력 소스의 총 문자 수가 변환할 전체 단위를 나타냅니다. 따라서 총 문자가 100개이고 지원되지 않는 요소가 10개인 문자가 하나만 있는 경우 변환율은 90% 입니다. 문자를 이용한 변환율은 지원되지 않는 요소에 속하는 문자만 처벌하기 때문에 더 정확하지만, 수작업으로 계산하고 이해하기 어렵다는 단점이 있습니다.

코드 라인을 사용한 변환율

코드 라인을 선택하면(기본 옵션) 입력된 소스 코드의 코드 라인 수는 변환할 전체 단위를 나타내며, 지원되지 않는 요소가 포함된 라인은 완전히 지원되지 않는 코드 단위로 간주됩니다. 따라서, 100개 문자로 구성된 입력 코드가 5개 라인으로 나뉘어 있고, 지원되지 않는 요소가 한 라인에만 포함되어 있다면, 전환율은 80% 가 됩니다. 지원되지 않는 요소가 포함된 전체 라인 도 지원되지 않는 것으로 간주되기 때문입니다. 라인을 사용한 변환율은 추적하기 쉽지만 지원되지 않는 요소가 포함된 코드 라인 전체에 패널티가 적용되기 때문에(같은 라인에 지원되는 다른 요소가 있더라도) 정확도가 떨어집니다.

다음 예제에서는 2개의 메트릭을 사용하여 전환율을 계산하는 방법을 보여줍니다.

변환율 예시

입력 소스 코드

--Comment123
CREATE TABLE Table1(
 Prefix_Employee_Name CHAR(25),
 !ERROR_Col,
 Prefix_Employee_Sal DECIMAL(8))
Copy

공백과 라인 바꿈은 코드 문자로 간주되지 않으므로 위 코드에는 정확히 100개의 코드 문자가 있습니다. 위의 Table1 설명은 테이블에 속하며 100자 중 일부입니다. 다음은 SnowConvert 가 이 입력에 대해 생성하는 출력 코드입니다.

출력 소스 코드

--Comment123
CREATE OR REPLACE TABLE Table1 (
 Prefix_Employee_Name CHAR(25)
--                              ,
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '4' COLUMN '2' OF THE SOURCE CODE STARTING AT '!'. EXPECTED 'Column Definition' GRAMMAR. LAST MATCHING TOKEN WAS ',' ON LINE '3' COLUMN '31'. FAILED TOKEN WAS '!' ON LINE '4' COLUMN '2'. CODE '15'. **
-- !ERROR_Col
           ,
 Prefix_Employee_Sal DECIMAL(8))
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

테이블의 두 번째 열에 구문 분석 오류가 있으므로 지원되지 않는 요소입니다. 사용 가능한 두 가지 단위를 사용하여 변환율이 어떻게 처벌되는지 살펴 보겠습니다.

코드 문자를 사용한 변환율

입력 코드의 문자 분석은 다음과 같습니다

--Comment123 /*12 code characters*/
CREATE TABLE Table1( /*18 code characters*/
 Prefix_Employee_Name CHAR(25), /*29 code characters*/
 !ERROR_Col, /*11 code characters*/
 Prefix_Employee_Sal DECIMAL(8)) /*30 code characters*/
Copy
  • 총 코드 문자 수: 100

  • 지원되지 않는 요소의 코드 문자: 10

  • 결과: 90.00%

참고

4번째 라인에 11개의 문자가 있지만 지원되지 않는 것으로 표시된 문자는 10개뿐입니다. 이는 구문 분석 복구 메커니즘이 작동하는 방식 때문입니다. 구문 분석기가 오류를 발견하면 다음 구분 기호 문자(이 경우 쉼표(‘,’)까지의 모든 문자를 오류의 일부로 간주합니다. 즉, 입력 코드에서 지원되지 않는 문자의 양은 구문 분석 오류의 유형에 따라 크게 달라질 수 있습니다. 경우에 따라 구문 분석기가 실제 오류가 발생한 위치 근처까지 복구할 수 있지만, 안타깝게도 오류로 인해 많은 코드가 손실되는 경우도 있습니다.

코드 라인을 사용한 변환율

코드 라인을 단위로 사용하는 변환율은 계산하기가 훨씬 간단합니다.

  • 총 코드 라인 수: 5

  • 지원되지 않는 요소가 포함된 코드 라인: 1

  • 결과: 80%

LOC 변환율은 코드 형식에 따라 달라집니다

코드 라인을 단위로 사용하는 경우 변환율은 입력 코드의 형식에 따라 크게 달라집니다. 예를 들어, 다음 두 코드 샘플은 동일하지만 첫 번째 경우에는 모든 코드가 같은 라인에 배치되고 두 번째 경우에는 코드가 5라인으로 나뉩니다

SELECT col1, !error_col FROM table1;
```
```none
SELECT
   col1,
   !error_col
 FROM
    table1;
Copy

SELECT 에서 참조되는 두 번째 열에 잘못된 문자로 시작하기 때문에 오류가 있습니다. 첫 번째 경우 전체 코드가 같은 라인에 있으므로 변환율은 0%가 됩니다. 그러나 두 번째 경우에는 코드가 분할되어 있기 때문에 한 라인의 코드만 처벌되므로 변환율은 80%가 됩니다.

변환율 차이

서로 다른 연산자 시스템 간에 동일한 마이그레이션에 대해 변환 결과에 차이가 있을 수 있습니다.

이는 대부분의 경우 Microsoft Windows에서 파일에 CRLF 라인 바꿈을 사용하기 때문에 발생합니다. 이 형식은 \r\n 문자를 사용하지만 UNIX OS 는 \n(LF)만 사용합니다. \ 이러한 형식 차이로 인해 코드 프로세서가 입력 파일을 읽을 때 CRLF 형식은 두 문자로 계산하고 LF 파일에서는 한 문자로만 계산합니다. 이러한 계산 차이는 변환율, 특히 코드에 존재하는 문자열 식에서 다른 결과를 생성합니다.

이 문제를 방지하려면 Visual Studio Code 또는 이와 유사한 도구를 사용하여 라인 바꿈 형식을 변경할 수 있습니다.

파일 및 오브젝트 수준 분석

SQL - 파일

파일

변환율

Lines of Code

Total Object Quantity

Parsing Errors

SQL

42%

20

2

3

이 섹션에서는 모든 SQL 파일에 대한 전반적인 평가 요약 정보를 확인할 수 있습니다

  • 코드 변환율: 지정된 SQL 파일의 문자를 기반으로 한 변환율 추정치입니다.

  • 코드 라인: 지정된 SQL 파일의 코드 라인 수입니다.

  • 총 오브젝트 수량: 지정된 SQL 파일의 총 식별자 오브젝트 개수입니다.

  • 구문 분석 오류: 지정된 SQL 파일의 총 구문 분석 오류 수입니다.

경고

인식할 수 없는 오브젝트는 SQL 파일 섹션의 구문 분석 오류도 계산됩니다

경고

코드 변환율은 인식되지 않은 오브젝트도 고려하기 때문에 식별자 변환율과 다를 수 있습니다.

SQL - 식별된 오브젝트

오브젝트

변환율

Lines of Code

Total Object Quantity

Parsing Errors

테이블

67%

5

1

1

57%

7

1

1

프로시저

-

0

0

0

함수

N/A

N/A

N/A

N/A

참고

위 테이블에 N/A가 목록에 있는 경우 아키텍처상의 이유로 인해 해당 오브젝트 유형이 Snowflake에서 지원되지 않는다는 의미입니다. 이러한 오브젝트는 생성된 코드에 설명되어 있으며 변환율에 불이익을 주지 않습니다.

참고

변환율 필드에 “-“가 있으면 마이그레이션한 현재 파일 세트에 지정된 오브젝트의 인스턴스가 포함되어 있지 않음을 의미합니다.

이 섹션에서는 테이블, 뷰, 프로시저 등과 같은 DDL 오브젝트로 구분된 모든 식별자에 대한 평가 정보를 확인할 수 있습니다.

경고

구문 분석기가 처리할 수 없는 코드가 있는 경우 전체 오브젝트는 _인식할 수 없는 오브젝트_로 간주되어 여기에 표시되지 않습니다

  • 코드 변환율: 테이블, 뷰, 프로시저 등과 같이 식별된 오브젝트에 대한 문자를 기반으로 변환율을 추정합니다.

  • 코드 라인: 식별된 오브젝트 유형별 코드 라인의 개수입니다.

  • 총 오브젝트 수량: 식별된 오브젝트의 각 유형에 대한 개수입니다.

  • 구문 분석 오류: 식별된 오브젝트의 각 유형 내에서 발생한 구문 분석 오류의 개수입니다.

예: 소스 코드에 있는 2개의 테이블 중 하나는 인식되지 않은 오브젝트이고, 다른 하나는 성공적으로 식별되었습니다. 5라인의 코드로 구성된 해당 테이블의 변환율은 1개의 구문 분석 오류로 인해 75%입니다.

문제 분석

문제 분석 테이블

이 페이지에서는 고유 문제의 수와 심각도별로 정렬된 문제 목록을 하위 정렬로 볼 수 있습니다

예를 들어, 지정된 소스 코드의 경우 구문 분석 오류와 관련된 2개의 심각도 문제와 _지원되지 않는 함수와 관련된 1개의 중간 심각도 문제가 있습니다

참고

심각도가 Medium/High/Critical인 오류만 현재 변환율에 영향을 미칩니다. 경고는 정보 제공을 위한 것입니다.