Snowpark Migration Accelerator: Readiness Scores¶
The Snowpark Migration Accelerator (SMA) evaluates your code and produces detailed assessment data. To make this information more accessible, SMA calculates Readiness Scores that measure how easily your code can be migrated to Snowflake. These scores act as compatibility indicators - the higher the score, the more compatible your code is with Snowflake’s platform. You can obtain these scores by simply running the SMA tool.
The SMA generates the following Readiness Scores:
The Readiness Scores indicate how compatible your code is with Snowflake, not how much work remains to be done. Even with a high readiness score, the remaining incompatible code might still require significant effort to migrate. To accurately estimate the work needed for migration, review the complete assessment report. If you need help creating a migration plan or estimating the effort required, please reach out to our team.
Levels¶
The Snowpark Migration Accelerator (SMA) uses a color-coded scoring system similar to a traffic light:
Red - Critical issue detected. Stop immediately and resolve the problem, as it significantly impacts the migration process or prevents accurate code analysis. Follow the provided action steps before proceeding.
Yellow - Warning detected. Review the action steps carefully and understand the potential impact on your migration. Once you understand the implications, you may continue to the next step.
Green - No major issues detected. While this indicates there are no significant blockers for migration, the code may still need adjustments. Review the action steps and continue with the migration process.
How to Interpret the Scores¶
For each score, you will receive:
A numerical value
A status indicator (red, yellow, or green as explained earlier)
A recommended next action
We strongly recommend that you:
Review scores sequentially - When you encounter a red score, investigate and address that issue right away
Review all recommended actions for every score - Check the suggested next steps for all results, including green scores, as they contain important action items
Let’s examine the readiness scores currently available in the system.
Spark API Readiness Score¶
The Snowpark Migration Accelerator (SMA) generates a Spark API Readiness Score, which indicates how ready your code is for migration. It’s important to note that this score only evaluates the usage of Spark API components and does not assess other elements such as third-party libraries or external dependencies in your code.
When SMA analyzes your code, it identifies all Spark API references, including both import statements and function calls. These references are documented in the Spark API Usages Inventory, which you can find in your local output directory. Each reference is classified as either “supported” or “not supported” according to the Spark Reference Categories. The readiness score is calculated by dividing the number of supported references by the total number of references found in your code.
This score is displayed as a percentage, indicating how well Snowflake supports the Spark API references found in your code. A higher percentage means better compatibility with Snowflake. You can view this score in both the detailed report and the assessment summary sections of the application.
The Readiness Score shown here is the original score generated by the SMA. For newer SMA versions that display only one Readiness Score, this score specifically measures Spark API compatibility.
Spark API Readiness Levels¶
Based on the calculated score, the result will be classified into one of three categories: green, yellow, or red. The application and output report will provide specific recommendations based on your score category.
The Spark API Readiness Score will be assigned one of these levels:
Green: Most Spark API references are supported, making this workload a strong candidate for migration. If other indicators are also green, consider proceeding with a Proof of Concept.
Yellow: Some Spark API references are not supported, which will require additional migration effort. Next steps should include creating an inventory of unsupported items and estimating the conversion effort needed.
Red: A large number of Spark API references are not supported. This workload may be challenging to migrate. Create an inventory of unsupported elements to identify patterns. If major re-architecture is needed, include this in your migration planning. For assistance, contact sma-support@snowflake.com.
Third-Party API Readiness Score¶
The Third-Party Readiness Score shows how many of your imported libraries can be used in Snowflake. To better understand this score, let’s first explain what we mean by “Third Party”:
Third Party Library: Any software package or library that is not developed, maintained, or controlled by Snowflake (or Snowpark in Snowflake).
The readiness score indicates the percentage of external libraries and packages that are compatible with Snowflake. For Python code, compatibility means the package is available through the Anaconda package collection in Snowpark. For Scala or Java code, compatibility means the package is already included in Snowpark’s core functionality.
The readiness score is calculated by dividing the number of supported third-party library imports by the total number of third-party library imports in your code.
Important Information About the Readiness Score:
Supported Third-Party Libraries in Snowpark: This includes all libraries that Snowpark supports (including org.apache.spark)
Total Third-Party Library Calls: The sum of all third-party library calls found in the code, including both Spark and non-Spark libraries, whether supported or unsupported by Snowpark.
Only imports marked as “ThirdPartyLib” in the Import Usages Inventory are counted. Internal dependencies and imports from within the codebase are excluded.
This metric counts the total number of calls, not unique library references. For example, if your code has 100 library calls total, with 80 calls to an unsupported library and 20 calls to a supported library, the support score would be 20%. This shows the actual usage frequency of supported vs. unsupported libraries in the code, rather than the ratio of unique library references.
Third Party API Readiness Levels¶
Based on the calculated score, the result will be classified into one of three categories: green, yellow, or red. The application and output report will provide specific recommendations based on your score category.
The Third Party API Readiness Score will be assigned one of these levels:
Green - The codebase uses Python libraries that are fully supported in Snowflake. No additional configuration is required.
Yellow - The codebase contains at least one Python package or library that is not currently supported in Snowpark. You can add unsupported third-party packages using several methods described in the third-party package documentation. To identify unsupported packages, review the Import Usages Inventory generated by SMA. Then analyze how these packages are used in your code and plan their implementation in Snowflake.
Red - The codebase heavily relies on packages or libraries not supported in Snowpark. This could mean either a single unsupported library is used extensively throughout the code, or multiple unsupported libraries are used across different parts of the codebase. A thorough assessment of these import statements is necessary to understand their impact. For guidance or assistance with package support, contact sma-support@snowflake.com.
SQL Readiness Score¶
The SQL Readiness Score indicates what percentage of SQL elements in your source code can be automatically converted to Snowflake SQL using the Snowpark Migration Accelerator (SMA). A higher score means more of your code can be converted automatically, which makes the migration process easier and faster.
The readiness score is calculated by dividing the number of SQL elements that can be converted by the total number of SQL elements found in the source code.
SQL Readiness Score Levels¶
The SQL Readiness Score will be assigned one of these levels:
Green - Most SQL in this codebase is either directly supported by Snowflake or can be automatically converted by the SMA. While no conversion is perfect, this workload requires minimal manual adjustments for Snowflake migration.
Yellow - Some SQL elements in this codebase are not supported by Snowflake, requiring additional effort for migration. Review the SQL Element Inventory for unsupported features and check the EWI’s in the issues output to create an action plan. You may need to make minor code adjustments or partially redesign some components.
Red - A large portion of SQL in this codebase is not compatible with Snowflake, suggesting significant redesign may be necessary. To proceed, review the SQL Element Inventory for unsupported features and examine the EWI’s in the issues output to develop a migration strategy. For assistance, contact sma-support@snowflake.com.
While readiness scores provide valuable insights, they should not be the only factor in determining a workload’s migration readiness. Consider multiple aspects of your migration plan alongside these scores, as they serve as an initial assessment rather than a complete evaluation. If you notice any readiness metrics that could be improved or aren’t accurately represented in the tool, please let us know. The SMA team continuously works to enhance and refine these readiness measurements.