SMA Inventories

Data for Decision Making

The Snowpark Migration Accelerator (SMA) generates a large amount of data when it is run on a codebase. That data is used to create the summary reporting present in both the assessment summary and the curated reports output by the tool. The raw data itself is also made available in the Reports folder when the tool is run as a series of inventories (spreadsheets).

Each inventory can be overwhelming, but understanding this information can unlock additional insight into the condition of both the original workload and the converted workload. Each column in every output file is given below along with the name of each file.

Some of these inventories are also shared via telemetry. More information can be found in the telemetry section of this documentation.

Assessment Report Details

The AssessmentReport.json file contains information that is shown in both the Detailed Report and the Assessment Summary in the application. This information is specifically to populate those reports and likely includes information that is also present in other spreadsheets.

Files Inventory

The files.csv has an inventory of each file present in that execution of the tool. The filetype and size are reported in this inventory.

  • Path: the filepath for each file. (Note: this is only within the root directory. For example, if a file is in the root folder only the filename will be recorded.)

  • Technology: source language scanner (Python or Scala)

  • FileKind: whether the file is a file with source code or another kind of file (like a text file or log)

  • BinaryKind: whether the file is readable or if it’s a binary file

  • Bytes: size of the file in bytes.

  • SupportedStatus: files are neither supported nor not-supported, so this file only reports "DoesNotApply"

Import Usages Inventory

The ImportUsagesInventory.csv has all the referenced import calls in the codebase. An import is classified as an external library that gets imported in at any point in the file.

  • Element: is the unique name for the actual spark reference.

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: the number of times that element shows up in a single line.

  • Alias: the alias of the element (if any).

  • Kind: null/empty value because all elements are imports.

  • Line: the line number in the source files where the element was found..

  • PackageName: the name of the package where the element was found.

  • Supported: Whether this reference is “supported” or not. Values: True/False.

  • Automated: null/empty. This column is deprecated.

  • Status: value Invalid. This column is deprecated.

  • Statement: the code where the element was used. [NOTE: This column is not sent via telemetry.]

  • SessionId: Unique identifier for each run of the tool.

  • SnowConvertCoreVersion: the version number for the core code process of the tool

  • SnowparkVersion: the version of snowpark API available for the specified technology and run of the tool.

  • ElementPackage: the package name where the imported element is declared (when available).

  • CellId: if this element was found in a notebook file, the numbered location of the cell where this element was in the file.

  • ExecutionId: the unique identifier for this execution of the SMA.

  • Origin: category of the import reference. Possible values are BuiltIn, ThirdPartyLib, or blank.

Input Files Inventory

Similar to the files inventory, the InputFilesInventory.csv has a list of every file by filetype and size.

  • Element: filename (same as FileId)

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: count of files with that filename

  • SessionId: Unique identifier for each session of the tool.

  • Extension: the file’s extension

  • Technology: the source file’s technology based on extension

  • Bytes: size of the file in bytes

  • CharacterLength: count of characters in the file

  • LinesOfCode: lines of code in the file

  • ParsingResult: “Successful” if the cell was fully parsed, “Error” if it was not

Input and Ouput Files Inventory

The IOFilesInventory.csv lists all external elements that are being read from or written to in the codebase.

  • Element: the file, variable, or other element being read or written

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: count of files with that filename

  • isLiteral: if the read/write location was in a literal

  • Format: if the SMA can determine the format of the element (such as csv, json, etc.)

  • FormatType: if the format above is specific

  • Mode: value will be Read or Write depending on whether there is a reader or writer

  • Supported: Whether this operation is supported in Snowpark

  • Line: the line in the file where the read or write occurs

  • SessionId: Unique identifier for each session of the tool

  • OptionalSettings: if a parameter is defined in the element, it will be listed here

  • CellId: cell id where that element was in that FileId (if in a notebook, null otherwise)

  • ExecutionId: Unique identifier for each run of the tool

Issue Inventory

The Issues.csv lists every conversion issue found in that codebase. A description, the exact location of the issue in the file, and a code associated with that issue will be reported in this document. You can find out more about each issue in the issue analysis section of this documentation.

  • Code: is the unique code for the issues reported by the tool .

  • Description: the text describing the issue and the name of the spark reference when applies.

  • Category: the classification of each issue. The options are Warning, Conversion Error, and Parser Error, Helper, Transformation, WorkAround, NotSupported, NotDefined.

  • NodeType: the name associated to the syntax node where the issue was found.

  • FileId: file where the spark reference was found and the relative path to that file.

  • ProjectId: name of the project (root directory the tool was run on)

  • Line: the line number in the source file where the issue was found.

  • Column: the column position in the source file where the issue was found.

Joins Inventory

The JoinsInventory.csv has an inventory of all dataframe joins done in that codebase.

  • Element: line number where the join begins (and ends, if not on a single line)

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: count of files with that filename

  • isSelfJoin: TRUE if the join is a self join, FALSE if not

  • HasLeftAlias: TRUE if the join has a left alias, FALSE if not

  • HasRightAlias: TRUE if the join has a right alias, FALSE if not

  • Line: line number where the join begins

  • SessionId: Unique identifier for each session of the tool

  • CellId: cell id where that element was in that FileId (if in a notebook, null otherwise)

  • ExecutionId: Unique identifier for each run of the tool

Notebook Cells Inventory

The NotebookCellsInventory.csv gives an inventory of all cells in a notebook based on the source code for each cell and the lines of code in that cell.

  • Element: source language (Python, Scala, or SQL)

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: count of files with that filename

  • CellId: cell id where that element was in that FileId (if in a notebook, null otherwise)

  • Arguments: null (this field will be empty)

  • LOC: lines of code in that cell

  • Size: count of characters in that cell

  • SupportedStatus: TRUE, unless there are any unsupported elements in that cell (FALSE)

  • ParsingResult: “Successful” if the cell was fully parsed, “Error” if it was not

Notebook Size Inventory

The NotebookSizeInventory.csv lists the size in lines of code of different source languages present in notebook files.

  • Element: filename (for this spreadsheet, it is the same as the FileId)

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: count of files with that filename

  • PythonLOC: Python lines of code present in notebook cells (will be 0 for non-notebook files)

  • ScalaLOC: Scala lines of code present in notebook cells (will be 0 for non-notebook files)

  • SqlLOC: SQL lines of code present in notebook cells (will be 0 for non-notebook files)

  • Line: null (this field will be empty)

  • SessionId: Unique identifier for each session of the tool.

  • ExecutionId: Unique identifier for each run of the tool.

Pandas Usages Inventory

[Python Only] The PandasUsagesInventory.csv lists every reference to the Pandas API present in the scanned codebase.

  • Element: is the unique name for the actual pandas reference.

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: the number of times that element shows up in a single line.

  • Alias: the alias of the element (applies just for import elements).

  • Kind: a category for each element. These could include Class, Variable, Function, Import and others.

  • Line: the line number in the source files where the element was found..

  • PackageName: the name of the package where the element was found.

  • Supported: Whether this reference is “supported” or not. Values: True/False.

  • Automated: Whether or not the tool can automatically convert it. Values: True/False.

  • Status: the categorization of each element. The options are Rename, Direct, Helper, Transformation, WorkAround, NotSupported, NotDefined.

  • Statement: how that element was used. [NOTE: This column is not sent via telemetry.]

  • SessionId: Unique identifier for each run of the tool.

  • SnowConvertCoreVersion: the version number for the core code process of the tool

  • SnowparkVersion: the version of Snowpark API available for the specified technology and run of the tool.

  • PandasVersion: version number of the pandas API that was used to identify elements in this codebase

  • CellId: cell id where that element was in that FileId (if in a notebook, null otherwise)

  • ExecutionId: Unique identifier for each run of the tool.

Spark Usages Inventory

The SparkUsagesInventory.csv shows the exact location and usage for each reference to the Spark API. This information is used to build the Readiness Score.

  • Element: is the unique name for the actual spark reference.

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: the number of times that element shows up in a single line.

  • Alias: the alias of the element (applies just for import elements).

  • Kind: a category for each element. These could include Class, Variable, Function, Import and others.

  • Line: the line number in the source files where the element was found..

  • PackageName: the name of the package where the element was found.

  • Supported: Whether this reference is “supported” or not. Values: True/False.

  • Automated: Whether or not the tool can automatically convert it. Values: True/False.

  • Status: the categorization of each element. The options are Rename, Direct, Helper, Transformation, WorkAround, NotSupported, NotDefined.

  • Statement: the code where the element was used. [NOTE: This column is not sent via telemetry.]

  • SessionId: Unique identifier for each run of the tool.

  • SnowConvertCoreVersion: the version number for the core code process of the tool

  • SnowparkVersion: the version of Snowpark API available for the specified technology and run of the tool.

  • CellId: if this element was found in a notebook file, the numbered location of the cell where this element was in the file.

  • ExecutionId: the unique identifier for this execution of the SMA.

The SqlStatementsInventory.csv has a count of SQL keywords present in sql spark elements.

  • Element: name for the code element where the SQL was found

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: the number of times that element shows up in a single line.

  • InterpolationCount: count of other elements inserted into the element

  • Keywords: a dictionary of the keywords and count of each

  • Size: character count for each sql statement

  • LiteralCount: count of strings in this element

  • NonLiteralCount: sql components of the element not in a literal

  • Line: the line number where that element occurs

  • SessionId: Unique identifier for each session of the tool.

  • CellId: cell id where that element was in that FileId (if in a notebook, null otherwise)

  • ExecutionId: Unique identifier for each run of the tool.

SQL Elements Inventory

The SQLElementsInventory.csv has a count of SQL present in sql spark elements.

  • Element: Name for the code element where the SQL was found (e.g., SqlFromClause, SqlSelect, SqlSelectBody, SqlSignedNumericLiteral).

  • ProjectId: Name of the project (root directory the tool was run on).

  • FileId: File where the SQL reference was found and the relative path to that file.

  • Count: The number of times that element shows up in a single line.

  • NotebookCellId: The notebook cell ID.

  • Line: The line number where that element occurs.

  • Column: The column number where that element occurs.

  • SessionId: Unique identifier for each session of the tool.

  • ExecutionId: Unique identifier for each run of the tool.

  • SqlFlavor: The SQL flavor being used (e.g., Spark SQL, Hive SQL).

  • RootFullName: The fully qualified name of the root element in the code.

  • RootLine: The line number where the root element is located.

  • RootColumn: The column number where the root element is located.

  • TopLevelFullName: The fully qualified name of the top-level SQL statement or code block.

  • TopLevelLine: The line number where the top-level statement is located.

  • TopLevelColumn: The column number where the top-level statement is located.

  • ConversionStatus: The status of the SQL conversion (e.g., Success, Failed).

  • Category: The category of the SQL element (e.g., DDL, DML, DQL, DCL, TCL).

  • EWI: The EWI (Error Warning Information) code associated with the SQL element.

  • ObjectReference: The reference name of the object involved in the SQL (e.g., table, view).

SQL Embedded Usage Inventory

The SqlEmbeddedUsageInventory.csv has a count of SQL keywords present in sql spark elements.

  • Element: Name for the code element where the SQL was found (e.g., SqlFromClause, SqlSelect, SqlSelectBody, SqlSignedNumericLiteral).

  • ProjectId: Name of the project (root directory the tool was run on).

  • FileId: File where the SQL reference was found and the relative path to that file.

  • Count: The number of times that element shows up in a single line.

  • ExecutionId: Unique identifier for each run of the tool.

  • LibraryName: Name of the library being used.

  • HasLiteral: Indicates whether the element contains literals.

  • HasVariable: Indicates whether the element contains variables.

  • HasFunction: Indicates whether the element contains functions.

  • ParsingStatus: Indicates the parsing status (e.g., Success, Failed, Partial).

  • HasInterpolation: Indicates whether the element contains interpolations.

  • CellId: The notebook cell ID.

  • Line: The line number where that element occurs. Column: The column number where that element occurs.

Third Party Usages Inventory

The ThirdPartyUsagesInventory.csv has

  • Element: is the unique name for the third party reference.

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where the spark reference was found and the relative path to that file.

  • Count: the number of times that element shows up in a single line.

  • Alias: the alias of the element (if any).

  • Kind: categorization of the element such as variable, type, function, or class.

  • Line: the line number in the source files where the element was found.

  • PackageName: package name for the element (concatenation of ProjectId and FileId in Python).

  • Statement: the code where the element was used. [NOTE: This column is not sent via telemetry.]

  • SessionId: Unique identifier for each session of the tool.

  • CellId: cell id where that element was in that FileId (if in a notebook, null otherwise)

  • ExecutionId: Unique identifier for each execution of the tool.

Packages Inventory

The packagesInventory.csv has

  • Element: is the name of the package.

  • ProjectId: name of the project (root directory the tool was run on)

  • FileId: file where package was found and the relative path to that file.

  • Count: the number of times that element shows up in a single line.

Tool Execution Summary

The tool_execution.csv has some basic information about this run of the SMA tool.

  • ExecutionId: Unique identifier for each run of the tool.

  • ToolName: the name of the tool. Values: PythonSnowConvert SparkSnowConvert (scala tool)

  • Tool_Version: the version number of the tool.

  • AssemblyName: the name of the code processor (essentially, a longer version of the ToolName)

  • LogFile: whether a log file was sent on an exception/failure

  • FinalResult: where the tool stopped if there was an exception/failure

  • ExceptionReport: if an exception report was sent on an exception/failure

  • StartTime: The timestamp for when the tool started executing.

  • EndTime: The timestamp for when the tool stopped executing.

  • SystemName: The serial number of the machine where the tool was executing (this is only used for troubleshooting and license validation purposes).

Last updated