Snowpark Migration Accelerator: SMA 인벤토리¶
Snowpark Migration Accelerator(SMA)는 코드베이스를 분석하여 상세한 데이터를 생성하며, 이 데이터는 보고서 폴더에 스프레드시트(인벤토리)로 저장됩니다. 이 데이터는 두 가지 유형의 보고서를 생성하는 데 사용됩니다.
인벤토리 파일을 이해하는 것이 처음에는 어려워 보일 수 있지만, 소스 워크로드와 변환된 워크로드 모두에 대한 귀중한 인사이트를 제공합니다. 아래에서 각 출력 파일과 해당 열에 대해 자세히 설명합니다.
이러한 인벤토리는 원격 측정 데이터 수집을 통해서도 공유됩니다. 자세한 내용은 이 설명서의 원격 측정 섹션을 참조하십시오.
평가 보고서 세부 정보¶
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: 도구를 실행한 기계의 일련 번호(문제 해결 및 라이선스 확인에만 사용됨).