Snowpark Migration Accelerator: SMA 인벤토리

Snowpark Migration Accelerator(SMA)는 코드베이스를 분석하여 상세한 데이터를 생성하며, 이 데이터는 보고서 폴더에 스프레드시트(인벤토리)로 저장됩니다. 이 데이터는 두 가지 유형의 보고서를 생성하는 데 사용됩니다.

  1. 평가 요약

  2. 큐레이팅된 보고서

인벤토리 파일을 이해하는 것이 처음에는 어려워 보일 수 있지만, 소스 워크로드와 변환된 워크로드 모두에 대한 귀중한 인사이트를 제공합니다. 아래에서 각 출력 파일과 해당 열에 대해 자세히 설명합니다.

이러한 인벤토리는 원격 측정 데이터 수집을 통해서도 공유됩니다. 자세한 내용은 이 설명서의 원격 측정 섹션을 참조하십시오.

평가 보고서 세부 정보

AssessmentReport.json 파일은 애플리케이션의 상세 보고서 및 평가 요약 섹션에 표시되는 데이터를 저장합니다. 이 파일은 주로 이러한 보고서를 채우는 데 사용되며 다른 스프레드시트에서도 사용할 수 있는 정보를 포함할 수 있습니다.

파일 인벤토리

files.csv 에는 도구 실행 중에 처리된 모든 파일의 파일 유형과 크기를 포함한 전체 목록이 포함되어 있습니다.

  • 경로: 루트 디렉터리를 기준으로 한 파일 위치입니다. 예를 들어, 루트 디렉터리에 있는 파일은 해당 파일 이름만 표시됩니다.

  • 기술: 소스 코드의 프로그래밍 언어(Python 또는 Scala)

  • FileKind: 파일에 소스 코드가 포함되어 있는지 또는 다른 유형(예: 텍스트 또는 로그 파일)인지 식별합니다

  • BinaryKind: 파일이 사람이 읽을 수 있는 텍스트인지 이진 파일인지를 나타냅니다

  • 바이트: 바이트 단위로 측정된 파일 크기입니다

  • SupportedStatus: 파일 지원 상태는이 컨텍스트에 적용되지 않으므로 항상 “DoesNotApply”가 표시됩니다

사용량 인벤토리 가져오기

ImportUsagesInventory.csv 파일에는 코드베이스에 있는 모든 외부 라이브러리 가져오기 목록이 포함되어 있습니다. 외부 라이브러리는 소스 코드 파일로 가져오는 패키지 또는 모듈입니다.

  • 요소: Spark 참조의 고유 식별자입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 참조가 포함된 상대 경로 및 파일 이름입니다

  • 카운트: 한 라인에서 요소의 발생 횟수

  • 별칭: 요소의 대체 이름(선택 사항)

  • Kind: 모든 요소가 가져오기이므로 항상 비어 있음/null

  • 라인: 요소가 표시되는 소스 코드 라인 번호

  • PackageName: 요소가 포함된 패키지

  • 지원됨: 참조를 변환할 수 있는지 여부(true/false)를 나타냅니다

  • 자동화됨: 비어 있음/null(사용되지 않는 열)

  • 상태: 항상 “유효하지 않음”(사용되지 않는 열)

  • 문: 요소를 사용한 실제 코드 [원격 측정에 포함되지 않음]

  • SessionId: 각 도구 실행에 대한 고유 식별자

  • SnowConvertCoreVersion: 도구의 코어 처리 엔진 버전 번호

  • SnowparkVersion: 특정 기술에 대한 Snowpark API 버전 사용 가능

  • ElementPackage: 가져온 요소가 포함된 패키지 이름(사용할 수 있는 경우)

  • CellId: 노트북 파일의 경우, 해당 요소가 포함된 셀 번호를 나타냅니다

  • ExecutionId: 이 SMA 실행의 고유 식별자

  • 출처: 가져오기의 소스 유형(BuiltIn, ThirdPartyLib 또는 공백)

입력 파일 인벤토리

InputFilesInventory.csv 파일에는 파일 유형과 크기에 따라 조직된 모든 파일의 자세한 목록이 포함되어 있습니다.

  • 요소: 파일 이름, FileId 와 동일함

  • ProjectId: 도구가 실행된 루트 디렉터리로 표시되는 프로젝트 이름입니다

  • FileId: Spark 참조가 포함된 파일의 전체 경로(상대 경로로 표시됨)

  • 개수: 이 파일 이름을 공유하는 파일 수입니다

  • SessionId: 각 도구 세션에 할당된 고유 식별자

  • 확장자: 파일 확장자 유형

  • 기술: 파일 확장자에 따라 결정되는 프로그래밍 언어 또는 기술 유형입니다

  • 바이트: 바이트 단위로 측정된 파일 크기입니다

  • CharacterLength: 파일 내 총 문자 수

  • LinesOfCode: 파일 내 총 코드 라인 수

  • ParsingResult: 셀이 성공적으로 구문 분석되었는지(“성공”) 또는 오류가 발생했는지(“오류”)를 나타냅니다

입력 및 출력 파일 인벤토리

IOFilesInventory.csv 파일에는 코드에서 읽거나 쓰는 모든 외부 파일 및 리소스 목록이 포함되어 있습니다.

  • 요소: 읽기 또는 쓰기 작업을 위해 액세스하는 특정 항목(파일, 변수 또는 구성 요소)입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 코드가 감지된 전체 경로 및 파일 이름

  • 개수: 이 파일 이름의 발생 횟수입니다

  • isLiteral: 읽기/쓰기 위치가 리터럴 값으로 지정되었는지 여부를 나타냅니다

  • 형식: 감지된 파일 형식(예: CSV, JSON)을 SMA 에서 식별할 수 있는 경우

  • FormatType: 식별자 형식이 명시적지 여부를 지정합니다

  • 모드: 작업이 “읽기” 또는 “쓰기”인지 여부를 나타냅니다

  • 지원됨: Snowpark가 이 작업을 지원하는지 여부를 나타냅니다

  • 라인: 읽기 또는 쓰기 작업이 발생하는 파일의 라인 번호입니다

  • SessionId: 각 도구 세션에 할당된 고유 식별자

  • OptionalSettings: 요소에 대해 정의된 추가 매개 변수를 나열합니다

  • CellId: 노트북 파일의 경우, 특정 셀 위치를 식별합니다(노트북이 아닌 파일의 경우 null)

  • ExecutionId: 도구가 실행될 때마다 고유 식별자

문제 인벤토리

Issues.csv 파일에는 코드베이스에서 발견된 모든 변환 문제에 대한 자세한 보고서가 포함되어 있습니다. 각 문제에 대해 다음을 확인할 수 있습니다.

  • 문제를 설명하는 설명

  • 문제가 발생한 파일 내의 정확한 위치

  • 문제 유형에 대한 고유 코드 식별자

특정 문제에 대한 자세한 내용은 설명서의 문제 분석 섹션을 참조하십시오.

  • 코드: 도구가 감지한 각 문제에 할당된 고유 식별자입니다

  • 설명: 해당되는 경우 Spark 참조 이름을 포함하여 문제에 대한 자세한 설명

  • 카테고리: 발견된 문제의 유형으로, 다음 중 하나일 수 있습니다.

    • 경고

    • 변환 오류

    • 구문 분석기 오류

    • 헬퍼

    • 변환

    • WorkAround

    • NotSupported

    • NotDefined

  • NodeType: 문제가 감지된 구문 노드 식별자입니다

  • FileId: Spark 참조가 발견된 상대 경로 및 파일 이름입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • 라인: 문제가 발생한 소스 파일의 특정 라인 번호입니다

  • 열: 문제가 발생한 라인의 특정 문자 위치입니다

조인 인벤토리

JoinsInventory.csv 파일에는 코드베이스에 있는 모든 데이터프레임 조인 작업의 포괄적인 목록이 포함되어 있습니다.

  • 요소: 행 번호: 조인이 시작되는 위치(여러 행에 걸쳐 있는 경우 끝나는 위치)를 나타내는 행 번호입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 참조가 포함된 파일의 경로와 이름입니다

  • 개수: 동일한 파일 이름을 가진 파일 수

  • isSelfJoin: 테이블을 자체와 조인하는 경우 TRUE, 그렇지 않은 경우 FALSE

  • HasLeftAlias: 조인의 왼쪽에 별칭이 정의된 경우 TRUE, 그렇지 않은 경우 FALSE

  • HasRightAlias: 조인의 오른쪽에 별칭이 정의된 경우 TRUE, 그렇지 않은 경우 FALSE

  • 라인: 조인의 시작 라인 번호

  • SessionId: 각 도구 세션에 할당된 고유 식별자

  • CellId: 요소가 포함된 노트북 셀의 식별자(노트북이 아닌 파일의 경우 null)

  • ExecutionId: 각 도구 실행에 대한 고유 식별자

노트북 셀 인벤토리

NotebookCellsInventory.csv 파일은 소스 코드 내용 및 셀당 코드 라인 수를 포함해 노트북 내의 모든 셀에 대한 자세한 목록을 제공합니다.

  • 요소: 소스 코드에 사용되는 프로그래밍 언어(Python, Scala 또는 SQL)

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 코드가 감지된 전체 경로 및 파일 이름

  • 개수: 이 특정 파일 이름을 가진 파일의 개수입니다

  • CellId: 노트북 파일의 경우, 코드가 포함된 셀의 고유 식별자(노트북이 아닌 파일의 경우 null)

  • 인자: 이 필드는 항상 비어 있습니다(null)

  • LOC: 셀의 총 코드 라인 수

  • 크기: 셀의 총 문자 수입니다

  • SupportedStatus: 셀의 모든 요소가 지원되는지 (TRUE) 또는 지원되지 않는 요소가 있는지 (FALSE) 나타냅니다

  • ParsingResult: 셀이 성공적으로 구문 분석되었는지(“성공”) 또는 구문 분석 오류가 있었는지(“오류”)를 표시합니다

노트북 크기 인벤토리

NotebookSizeInventory.csv 파일은 노트북 파일에 있는 각 프로그래밍 언어에 대한 코드 라인의 요약을 제공합니다.

  • 파일 이름: 스프레드시트 파일의 이름(FileId)과 동일한 이름입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 참조가 포함된 파일의 상대 경로 및 이름입니다

  • 개수: 이 특정 파일 이름을 가진 파일의 개수입니다

  • PythonLOC: 노트북 셀의 Python 코드 라인 수(일반 파일의 경우 0)

  • ScalaLOC: 노트북 셀의 Scala 코드 라인 수(일반 파일의 경우 0)

  • SqlLOC: 노트북 셀의 SQL 코드 라인 수(일반 파일의 경우 0)

  • 라인: 이 필드는 항상 비어(null) 있습니다

  • SessionId: 각 도구 세션에 할당된 고유 식별자

  • ExecutionId: 각 도구 실행에 할당된 고유 식별자

Pandas 사용량 인벤토리

PandasUsagesInventory.csv 파일에는 스캔 프로세스 중에 Python 코드베이스에서 발견된 모든 Pandas API 참조의 포괄적인 목록이 포함되어 있습니다.

  • 요소: Pandas 참조에 대한 고유 식별자입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 참조가 포함된 파일의 상대 경로입니다

  • 카운트: 한 라인에서 요소의 발생 횟수

  • 별칭: 요소에 사용되는 대체 이름(가져오기에만 적용됨)

  • 종류: 클래스, 변수, 함수, 가져오기 등과 같은 요소의 유형입니다.

  • 라인: 요소가 발견된 소스 파일 라인 번호입니다

  • PackageName: 요소가 포함된 패키지

  • 지원됨: 참조가 지원되는지 여부(true/false)를 나타냅니다

  • 자동화: 도구가 요소를 자동으로 변환할 수 있는지 여부(true/false)를 나타냅니다

  • 상태: 요소 분류: 이름 바꾸기, 직접, 헬퍼, 변환, WorkAround, NotSupported 또는 NotDefined

  • 문: 해당 요소가 사용되는 컨텍스트 [원격 측정에 포함되지 않음]

  • SessionId: 각 도구 실행에 대한 고유 식별자

  • SnowConvertCoreVersion: 도구의 Core 처리 코드 버전 번호

  • SnowparkVersion: 특정 기술 및 도구 실행에 사용 가능한 Snowpark API 버전

  • PandasVersion: 코드베이스에서 요소를 식별하는 데 사용되는 Pandas API 버전

  • CellId: FileId 의 셀 식별자(노트북에만 해당, 그렇지 않으면 null)

  • ExecutionId: 각 도구 실행에 대한 고유 식별자

Spark 사용량 인벤토리

SparkUsagesInventory.csv 파일은 코드에서 Spark API 함수가 사용되는 위치와 방법을 식별합니다. 이 정보는 코드의 마이그레이션 준비 상태를 나타내는 준비도 점수를 계산하는 데 도움이 됩니다.

  • 요소: Spark 참조의 고유 식별자입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: Spark 참조가 포함된 상대 경로 및 파일 이름입니다

  • 카운트: 한 라인에서 요소의 발생 횟수

  • 별칭: 요소의 별칭(가져오기 요소에만 적용됨)

  • 종류: 요소의 카테고리(예: 클래스, 변수, 함수, 가져오기)

  • 라인: 요소가 발견된 소스 파일 라인 번호입니다

  • PackageName: 요소가 포함된 패키지 이름입니다

  • 지원됨: 참조가 지원되는지 여부(true/false)를 나타냅니다

  • 자동화: 도구가 요소를 자동으로 변환할 수 있는지 여부(true/false)를 나타냅니다

  • 상태: 요소 분류 (이름 바꾸기, 직접, 헬퍼, 변환, WorkAround, NotSupported, NotDefined)

  • 문: 해당 요소가 사용되는 실제 코드 [참고: 이 열은 원격 측정을 통해 전송되지 않습니다.]

  • SessionId: 각 도구 실행에 대한 고유 식별자

  • SnowConvertCoreVersion: 도구의 코어 프로세스 버전 번호입니다

  • SnowparkVersion: 특정 기술 및 도구 실행에 사용 가능한 Snowpark API 버전

  • CellId: 노트북 파일의 경우, 요소가 발견된 셀의 숫자 위치입니다

  • ExecutionId: 이 특정 SMA 실행에 대한 고유 식별자

SqlStatementsInventory.csv 파일에는 Spark SQL 요소에 있는 SQL 키워드 수가 포함되어 있습니다.

  • 요소: SQL 문을 포함하는 코드 요소의 이름입니다

  • ProjectId: 도구가 실행된 루트 디렉터리 이름

  • FileId: Spark 참조가 포함된 파일의 상대 경로입니다

  • 카운트: 한 라인에서 요소의 발생 횟수

  • InterpolationCount: 이 요소에 삽입된 외부 요소 수

  • 키워드: SQL 키워드와 그 빈도가 포함 된 사전

  • 크기: SQL 문의 총 문 수

  • LiteralCount: 요소의 문자열 리터럴 개수

  • NonLiteralCount: 문자열 리터럴이 아닌 SQL 구성 요소 개수

  • 라인: 요소가 표시되는 라인 번호

  • SessionId: 각 도구 세션의 고유 식별자

  • CellId: 요소가 포함된 노트북 셀의 식별자(노트북에 없는 경우 null)

  • ExecutionId: 각 도구 실행에 대한 고유 식별자

SQL 요소 인벤토리

SQLElementsInventory.csv 파일에는 Spark SQL 요소 내에서 발견되는 SQL 문의 수가 포함되어 있습니다.

SQL 분석 보고서에 포함된 필드는 다음과 같습니다.

  • 요소: SQL 코드 요소 유형 (예: SqlSelect, SqlFromClause)

  • ProjectId: 도구가 실행된 루트 디렉터리 이름

  • FileId: SQL 코드가 포함된 파일 경로

  • 카운트: 한 라인에서 요소의 발생 횟수

  • NotebookCellId: 노트북 셀의 ID

  • 라인: 요소가 표시되는 라인 번호

  • 열: 열: 요소가 표시되는 열 번호입니다

  • SessionId: 각 도구 세션의 고유 ID

  • ExecutionId: 각 도구 실행의 고유 ID

  • SqlFlavor: 분석 대상 SQL 유형(예: Spark SQL, Hive SQL)

  • RootFullName: 기본 코드 요소의 전체 이름

  • RootLine: 주요 요소의 라인 번호

  • RootColumn: 주 요소의 열 번호

  • TopLevelFullName: 최상위 SQL 문의 전체 이름

  • TopLevelLine: 최상위 문의 라인 번호

  • TopLevelColumn: 최상위 문의 열 번호

  • ConversionStatus: SQL 변환 결과(예: 성공, 실패)

  • 카테고리: SQL 문의 유형(예: DDL, DML, DQL)

  • EWI: 오류 경고 정보 코드

  • ObjectReference: 참조되는 SQL 오브젝트의 이름(예: 테이블 이름, 뷰 이름)

SQL 임베디드 사용량 인벤토리

SqlEmbeddedUsageInventory.csv 파일에는 Spark SQL 요소에 있는 SQL 키워드 수가 포함되어 있습니다.

  • 요소: 코드에 있는 SQL 구성 요소의 유형(예: Select 문, From 절 또는 숫자 리터럴)

  • ProjectId: 도구가 실행된 루트 디렉터리 이름입니다

  • FileId: SQL 참조가 포함된 파일의 위치 및 상대 경로입니다

  • 카운트: 이 요소가 한 라인에 표시되는 횟수

  • ExecutionId: 각 도구 실행에 할당된 고유 ID

  • LibraryName: 사용 중인 라이브러리 이름

  • HasLiteral: 요소에 리터럴 값이 포함되어 있는지 표시합니다

  • HasVariable: 요소에 변수가 포함되어 있는지 표시합니다

  • HasFunction: 요소에 함수 호출이 포함되어 있는지 표시합니다

  • ParsingStatus: 현재 구문 분석 상태(성공, 실패 또는 부분)

  • HasInterpolation: 요소에 문자열 보간이 포함되어 있는지 표시합니다

  • CellId: 노트북 셀의 식별자

  • 라인: 요소가 있는 라인 번호입니다

  • 열: 요소를 찾을 수 있는 열 번호입니다

서드 파티 사용 인벤토리

ThirdPartyUsagesInventory.csv 파일에는 다음이 포함됩니다

  • 요소: 서드 파티 참조의 고유 식별자입니다

  • ProjectId: 도구가 실행된 프로젝트의 루트 디렉터리 이름입니다

  • FileId: Spark 참조가 포함된 파일의 상대 경로입니다

  • 카운트: 한 라인에 포함된 요소의 발생 횟수입니다

  • 별칭: 요소에 할당된 대체 이름(해당되는 경우)

  • 종류: 종류: 요소의 유형 분류(변수, 유형, 함수 또는 클래스)입니다

  • 라인: 요소가 발견된 소스 파일 라인 번호입니다

  • PackageName: 전체 패키지 이름(Python으로 작성된 ProjectId 및 FileId 의 조합)

  • 문: 해당 요소가 사용되는 실제 코드[참고: 텔레메트리 데이터에 포함되지 않음]

  • SessionId: 각 도구 세션의 고유 식별자

  • CellId: 요소가 발견된 노트북 셀 식별자(노트북이 아닌 파일의 경우 null)

  • ExecutionId: 각 도구 실행에 대한 고유 식별자

패키지 인벤토리

packagesInventory.csv 파일에는 다음이 포함됩니다

  • 패키지 이름: 분석 중인 패키지의 이름입니다.

  • 프로젝트 이름: 도구가 실행된 루트 디렉터리에 해당하는 프로젝트의 이름입니다.

  • 파일 위치: 패키지가 발견된 파일 경로(상대 경로로 표시됨)입니다.

  • 발생 횟수: 이 패키지가 한 라인의 코드에 표시되는 횟수입니다.

도구 실행 요약

tool_execution.csv 파일에는 현재 Snowpark Migration Accelerator(SMA) 도구의 실행에 대한 필수 정보가 포함되어 있습니다.

  • ExecutionId: 도구가 실행될 때마다 할당되는 고유 식별자입니다.

  • ToolName: 사용 중인 도구의 이름입니다. PythonSnowConvert 또는 SparkSnowConvert (Scala의 경우)일 수 있습니다.

  • Tool_Version: 소프트웨어의 버전 번호입니다.

  • AssemblyName: 코드 프로세서의 전체 이름(ToolName 의 자세한 버전)입니다.

  • LogFile: 오류 또는 장애가 발생했을 때 로그 파일이 생성되었는지 여부를 나타냅니다.

  • FinalResult: 오류 또는 장애가 발생한 경우 도구가 어느 지점에서 중지되었는지를 나타냅니다.

  • ExceptionReport: 장애가 발생했을 때 오류 보고서가 생성되었는지 여부를 나타냅니다.

  • StartTime: 도구가 실행되기 시작한 날짜와 시간입니다.

  • EndTime: 도구 실행이 완료된 날짜와 시간입니다.

  • SystemName: 도구를 실행한 기계의 일련 번호(문제 해결 및 라이선스 확인에만 사용됨).