LogoLogo
SnowflakeDocumentation Home
  • Snowpark Migration Accelerator Documentation
  • General
    • Introduction
    • Getting Started
      • Download and Access
      • Installation
        • Windows Installation
        • MacOS Installation
        • Linux Installation
    • Conversion Software Terms of Use
      • Open Source Libraries
    • Release Notes
      • Old Version Release Notes
        • SC Spark Scala Release Notes
          • Known Issues
        • SC Spark Python Release Notes
          • Known Issues
    • Roadmap
  • User Guide
    • Overview
    • Before Using the SMA
      • Supported Platforms
      • Supported Filetypes
      • Code Extraction
      • Pre-Processing Considerations
    • Project Overview
      • Project Setup
      • Configuration and Settings
      • Tool Execution
    • Assessment
      • How the Assessment Works
      • Assessment Quick Start
      • Understanding the Assessment Summary
      • Readiness Scores
      • Output Reports
        • Curated Reports
        • SMA Inventories
        • Generic Inventories
        • Assessment zip file
      • Output Logs
      • Spark Reference Categories
    • Conversion
      • How the Conversion Works
      • Conversion Quick Start
      • Conversion Setup
      • Understanding the Conversion Assessment and Reporting
      • Output Code
    • Using the SMA CLI
      • Additional Parameters
  • Use Cases
    • Assessment Walkthrough
      • Walkthrough Setup
        • Notes on Code Preparation
      • Running the Tool
      • Interpreting the Assessment Output
        • Assessment Output - In Application
        • Assessment Output - Reports Folder
      • Running the SMA Again
    • Conversion Walkthrough
    • Sample Project
    • Using SMA with Docker
    • SMA CLI Walkthrough
  • Issue Analysis
    • Approach
    • Issue Code Categorization
    • Issue Codes by Source
      • General
      • Python
        • SPRKPY1000
        • SPRKPY1001
        • SPRKPY1002
        • SPRKPY1003
        • SPRKPY1004
        • SPRKPY1005
        • SPRKPY1006
        • SPRKPY1007
        • SPRKPY1008
        • SPRKPY1009
        • SPRKPY1010
        • SPRKPY1011
        • SPRKPY1012
        • SPRKPY1013
        • SPRKPY1014
        • SPRKPY1015
        • SPRKPY1016
        • SPRKPY1017
        • SPRKPY1018
        • SPRKPY1019
        • SPRKPY1020
        • SPRKPY1021
        • SPRKPY1022
        • SPRKPY1023
        • SPRKPY1024
        • SPRKPY1025
        • SPRKPY1026
        • SPRKPY1027
        • SPRKPY1028
        • SPRKPY1029
        • SPRKPY1030
        • SPRKPY1031
        • SPRKPY1032
        • SPRKPY1033
        • SPRKPY1034
        • SPRKPY1035
        • SPRKPY1036
        • SPRKPY1037
        • SPRKPY1038
        • SPRKPY1039
        • SPRKPY1040
        • SPRKPY1041
        • SPRKPY1042
        • SPRKPY1043
        • SPRKPY1044
        • SPRKPY1045
        • SPRKPY1046
        • SPRKPY1047
        • SPRKPY1048
        • SPRKPY1049
        • SPRKPY1050
        • SPRKPY1051
        • SPRKPY1052
        • SPRKPY1053
        • SPRKPY1054
        • SPRKPY1055
        • SPRKPY1056
        • SPRKPY1057
        • SPRKPY1058
        • SPRKPY1059
        • SPRKPY1060
        • SPRKPY1061
        • SPRKPY1062
        • SPRKPY1063
        • SPRKPY1064
        • SPRKPY1065
        • SPRKPY1066
        • SPRKPY1067
        • SPRKPY1068
        • SPRKPY1069
        • SPRKPY1070
        • SPRKPY1071
        • SPRKPY1072
        • SPRKPY1073
        • SPRKPY1074
        • SPRKPY1075
        • SPRKPY1076
        • SPRKPY1077
        • SPRKPY1078
        • SPRKPY1079
        • SPRKPY1080
        • SPRKPY1081
        • SPRKPY1082
        • SPRKPY1083
        • SPRKPY1084
        • SPRKPY1085
        • SPRKPY1086
        • SPRKPY1087
        • SPRKPY1088
        • SPRKPY1089
        • SPRKPY1101
      • Spark Scala
        • SPRKSCL1000
        • SPRKSCL1001
        • SPRKSCL1002
        • SPRKSCL1100
        • SPRKSCL1101
        • SPRKSCL1102
        • SPRKSCL1103
        • SPRKSCL1104
        • SPRKSCL1105
        • SPRKSCL1106
        • SPRKSCL1107
        • SPRKSCL1108
        • SPRKSCL1109
        • SPRKSCL1110
        • SPRKSCL1111
        • SPRKSCL1112
        • SPRKSCL1113
        • SPRKSCL1114
        • SPRKSCL1115
        • SPRKSCL1116
        • SPRKSCL1117
        • SPRKSCL1118
        • SPRKSCL1119
        • SPRKSCL1120
        • SPRKSCL1121
        • SPRKSCL1122
        • SPRKSCL1123
        • SPRKSCL1124
        • SPRKSCL1125
        • SPRKSCL1126
        • SPRKSCL1127
        • SPRKSCL1128
        • SPRKSCL1129
        • SPRKSCL1130
        • SPRKSCL1131
        • SPRKSCL1132
        • SPRKSCL1133
        • SPRKSCL1134
        • SPRKSCL1135
        • SPRKSCL1136
        • SPRKSCL1137
        • SPRKSCL1138
        • SPRKSCL1139
        • SPRKSCL1140
        • SPRKSCL1141
        • SPRKSCL1142
        • SPRKSCL1143
        • SPRKSCL1144
        • SPRKSCL1145
        • SPRKSCL1146
        • SPRKSCL1147
        • SPRKSCL1148
        • SPRKSCL1149
        • SPRKSCL1150
        • SPRKSCL1151
        • SPRKSCL1152
        • SPRKSCL1153
        • SPRKSCL1154
        • SPRKSCL1155
        • SPRKSCL1156
        • SPRKSCL1157
        • SPRKSCL1158
        • SPRKSCL1159
        • SPRKSCL1160
        • SPRKSCL1161
        • SPRKSCL1162
        • SPRKSCL1163
        • SPRKSCL1164
        • SPRKSCL1165
        • SPRKSCL1166
        • SPRKSCL1167
        • SPRKSCL1168
        • SPRKSCL1169
        • SPRKSCL1170
        • SPRKSCL1171
        • SPRKSCL1172
        • SPRKSCL1173
        • SPRKSCL1174
        • SPRKSCL1175
      • SQL
        • SparkSQL
          • SPRKSPSQL1001
          • SPRKSPSQL1002
          • SPRKSPSQL1003
          • SPRKSPSQL1004
          • SPRKSPSQL1005
          • SPRKSPSQL1006
        • Hive
          • SPRKHVSQL1001
          • SPRKHVSQL1002
          • SPRKHVSQL1003
          • SPRKHVSQL1004
          • SPRKHVSQL1005
          • SPRKHVSQL1006
      • Pandas
        • PNDSPY1001
        • PNDSPY1002
        • PNDSPY1003
        • PNDSPY1004
      • DBX
        • SPRKDBX1001
    • Troubleshooting the Output Code
      • Locating Issues
    • Workarounds
    • Deploying the Output Code
  • Translation Reference
    • Translation Reference Overview
    • SIT Tagging
      • SQL statements
    • SQL Embedded code
    • HiveSQL
      • Supported functions
    • Spark SQL
      • Spark SQL DDL
        • Create Table
          • Using
      • Spark SQL DML
        • Merge
        • Select
          • Distinct
          • Values
          • Join
          • Where
          • Group By
          • Union
      • Spark SQL Data Types
      • Supported functions
  • Workspace Estimator
    • Overview
    • Getting Started
  • INTERACTIVE ASSESSMENT APPLICATION
    • Overview
    • Installation Guide
  • Support
    • General Troubleshooting
      • How do I give SMA permission to the config folder?
      • Invalid Access Code error on VDI
      • How do I give SMA permission to Documents, Desktop, and Downloads folders?
    • Frequently Asked Questions (FAQ)
      • Using SMA with Jupyter Notebooks
      • How to request an access code
      • Sharing the Output with Snowflake
      • DBC files explode
    • Glossary
    • Contact Us
Powered by GitBook
On this page
  • Parsing Error
  • Conversion Error
  • Warning
  1. Issue Analysis

Issue Code Categorization

What kind of issue codes does the SMA generate?

PreviousApproachNextIssue Codes by Source

Last updated 1 year ago

The Snowpark Migration Accelerator (SMA) generates issue codes based on what it finds in a given codebase. These issue code are very descriptive, but ultimately can be grouped together in one of the following three categories.

Parsing Error

A parsing error is an error that comes from a failure of the tool to parse some part of the source code. In other words, the SMA came across some code that it does not recognize or does not think is valid. This is generally an error in the SMA or in the source code itself, and it could be caused by a variety of reasons. Some of the most common would include:

  • Code that is not valid in the source. The code put through the tool should run in the source platform. All of it. Meaning if a snippet of code or couple of lines that would not run on their own in the source platform are put through the tool, they will not be parsed by the SMA.

  • Code that contains a circular reference. As the SMA resolves dependencies, in large codebases there can be circular references. This can sometimes cause the tool to "skip" (or fail to parse) one or more of those references.

  • A new code pattern. Source platforms are being updated all the time, and while the SMA is also being updated all the time, there could be a gap.

  • Additional or unrecognized characters in the source code. Sometimes if the code is not uniformly encoded or there is an extra character at the beginning or the end of a file, the rest of the file may run in the source, but the SMA will produce a parsing error.

Parsing errors have specific error codes associated with them. Check in this documentation to see what codes may be related to a parsing error.

Conversion Error

A conversion error occurs when the SMA encounters code that it recognizes, but it cannot convert. Note that while a parsing error may be caused by an error in the input code, a conversion error is not. A conversion error is the tool performing correctly by identifying code that cannot be converted.

As with parsing errors and warnings, there are also a variety of reasons why a piece of code may not be able to be converted. A few of the more common reasons include:

  • The element from the source code is not supported in Snowflake. This means that there is (currently) no way to replicate the functionality from the source in the target.

  • The way a given element is used is not supported in Snowflake. It's possible that an element from a source platform is supported in Snowflake, but not the way that it is being used in the source.

  • Some essential parameters are not supported. The SMA completely parses the source code and builds a functional model of every element in the source code. As a result, it does more that just recognize an element and classify it. It understands how it is being used. as a result, there can be parameters from a function in the source code that are necessary, but are not supported in Snowflake.

  • A combination of functions is not supported. As with the previous bullet, the SMA's functional model will know how multiple functions interact with each other. It is possible for a set of functions that are all supported individually to not work together. The SMA will report this situation as a conversion error.

Most conversion errors should come with recommendations or suggested next steps that are included on the page for that specific error.

  • Comment out the line with the conversion error.

  • Leave the code uncommented to ensure that the file cannot be run.

Warning

A warning is not an error. A warning is output by the SMA when there is something the tool wants you to be aware of that has changed. Like the previous error messages on this page, this could occur for a variety of reasons, but it's important to note that warnings will not affect the output code's ability to run in the source. They are just message telling you that something may be (or look) a bit different.

Some of the reasons why a warning may be generated include:

  • The code looks different. The SMA does perform some transformations where it will generate an EWI.

  • There are corner cases where the conversion may not work. If 99.9% of tested use cases for a given element work, but there is a combination of parameters that could not work, the tool will output a warning. If the combination of parameters are actually being used in the source code, the tool will generated a conversion error.

  • Something was removed. This is probably the most common type of warning. There are many functions or parameters in a function that are necessary for the functionality of the source, but are not necessary in Snowflake.

Warnings usually do not require any action from the user. It is informational. However, it is strongly recommended that all warnings be reviewed before deploying to the target, and they should be accounted for when doing testing on the output code.

When the SMA generates a conversion error, it will always insert an EWI comment in the output code and log the error in . Depending on the specific error it will either:

Conversion errors have specific error codes associated with them. Check in this documentation to see what codes may be related to a conversion error.

Warnings have specific error codes associated with them. Check in this documentation to see what codes may be related to a warning.

the issue codes by source section
the issue codes by source section
the issue codes by source section
the issues inventory file