SnowConvert : Rapport d’évaluation

Résumé général

L’objectif de ce document est d’aider les utilisateurs à comprendre les résultats sommaires des outils de conversion SnowConvert. Il vous guidera à travers les différentes métriques renvoyées et sur la manière dont ces métriques peuvent être utilisées pour déterminer le niveau d’automatisation atteint, et la quantité d’effort manuel nécessaire pour transformer le code de sortie en code Snowflake équivalent sur le plan fonctionnel.

image

La plupart des concepts présentés dans cette documentation sont déjà expliqués sur la page principale du rapport. Voici tout de même d’autres informations utiles sur l’information la plus importante de l’image ci-dessus.

  • Nombre total d’erreurs d’analyse : Nombre de fois où l’outil de conversion a trouvé des fragments de texte qui n’ont pas été reconnus comme des éléments syntaxiquement corrects pour la langue source en cours de conversion. Une erreur d’analyse peut avoir un impact plus ou moins important. Il est important de déterminer le nombre de LOC affectés par les erreurs d’analyse et la part qu’ils représentent dans la charge de travail totale. Des erreurs d’analyse peuvent parfois se produire en raison de problèmes d’encodage ou parce que la charge de travail nécessite une certaine préparation.

  • Taux de conversion du code : Le taux de conversion est le pourcentage du code source total qui a été converti avec succès par SnowConvert en code Snowflake équivalent sur le plan fonctionnel. Chaque fois que l’outil identifie des éléments non pris en charge, c’est-à-dire des fragments du code source d’entrée qui n’ont pas été convertis en Snowflake, cela affecte le taux de conversion.

  • Objets identifiés : Le nombre de tous les objets DDL de niveau supérieur (table, vue, procédure, etc.) identifiés par SnowConvert. En cas d’erreur d’analyse sur un objet, il ne s’agit pas d’un objet identifié. \ Exemple : Les premiers objets de la ligne 1 à la ligne 6. Il y a manifestement une erreur d’analyse, de sorte que SnowConvert ne peut pas identifier cet objet.

Modes de taux de conversion

Comme indiqué précédemment, lorsqu’un élément est marqué comme non pris en charge (en raison d’erreurs d’analyse ou parce qu’il n’est pas pris en charge par Snowflake), le taux de conversion est pénalisé. La part du taux de conversion pénalisée pour chaque élément non pris en charge dépend de l’unité de code sélectionnée. Deux unités sont disponibles : les caractères ou les lignes.

Taux de conversion utilisant des caractères de code

Lorsque des caractères de code sont sélectionnés, la quantité totale de caractères dans la source d’entrée représente les unités globales à convertir. Ainsi, s’il y a 100 caractères au total et qu’il n’y a qu’un seul élément non pris en charge de 10 caractères, le taux de conversion est de 90 %. Le taux de conversion utilisant des caractères est plus précis car seuls les caractères appartenant aux éléments non pris en charge sont pénalisés, mais il est plus difficile à calculer manuellement et à comprendre.

Taux de conversion utilisant des lignes de code

Lorsque vous choisissez des lignes de code (option par défaut), le nombre de lignes de code dans le code source d’entrée représente les unités globales à convertir, et les lignes contenant des éléments non pris en charge sont entièrement considérées comme des unités de code non prises en charge. Ainsi, si le même code d’entrée avec ces 100 caractères est divisé en 5 lignes de code, et que l’élément non pris en charge se trouve dans une seule ligne, le taux de conversion sera de 80 % ; la ligne entière contenant l’élément non pris en charge est également considérée comme non prise en charge. Le taux de conversion utilisant des lignes est plus facile à suivre. Cependant, il est moins précis car des lignes entières de code contenant des éléments non pris en charge sont pénalisées (même s’il y a d’autres éléments pris en charge dans la même ligne).

L’exemple suivant montre comment le taux de conversion est calculé à l’aide des deux métriques.

Exemple de taux de conversion

Code source d’entrée

--Comment123
CREATE TABLE Table1(
 Prefix_Employee_Name CHAR(25),
 !ERROR_Col,
 Prefix_Employee_Sal DECIMAL(8))
Copy

Le code ci-dessus comporte exactement 100 caractères de code, car les espaces blancs et les sauts de ligne ne sont pas considérés comme des caractères de code. Le commentaire au-dessus de Table1 appartient à la table et fait partie de ces 100 caractères. Il s’agit du code de sortie que SnowConvert génère pour cette entrée.

Code source de sortie

--Comment123
CREATE OR REPLACE TABLE Table1 (
 Prefix_Employee_Name CHAR(25)
--                              ,
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '4' COLUMN '2' OF THE SOURCE CODE STARTING AT '!'. EXPECTED 'Column Definition' GRAMMAR. LAST MATCHING TOKEN WAS ',' ON LINE '3' COLUMN '31'. FAILED TOKEN WAS '!' ON LINE '4' COLUMN '2'. CODE '15'. **
-- !ERROR_Col
           ,
 Prefix_Employee_Sal DECIMAL(8))
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

La deuxième colonne de la table présente une erreur d’analyse et il s’agit donc d’un élément non pris en charge. Voyons comment le taux de conversion est pénalisé en utilisant les deux unités disponibles.

Taux de conversion utilisant des caractères de code

Voici la répartition des caractères dans le code d’entrée

--Comment123 /*12 code characters*/
CREATE TABLE Table1( /*18 code characters*/
 Prefix_Employee_Name CHAR(25), /*29 code characters*/
 !ERROR_Col, /*11 code characters*/
 Prefix_Employee_Sal DECIMAL(8)) /*30 code characters*/
Copy
  • Nombre total de caractères de code : 100

  • Caractères de code dans les éléments non pris en charge : 10

  • Résultat : 90,00 %

Note

Vous remarquerez qu’il y a 11 caractères dans la quatrième ligne, mais que seuls 10 sont marqués comme n’étant pas pris en charge. Cela s’explique par le fonctionnement du mécanisme de récupération de l’analyse. Lorsque l’analyseur rencontre une erreur, il prend en compte tous les caractères suivants, jusqu’au prochain caractère délimiteur. Dans ce cas, la virgule (“,”) fait partie de l’erreur. Cela signifie que la quantité de caractères non pris en charge dans un code d’entrée peut dépendre fortement du type d’erreurs d’analyse. Dans certains cas, l’analyseur sera en mesure de se rapprocher de l’endroit où se trouve l’erreur réelle, mais malheureusement, dans d’autres cas, une grande partie du code peut être avalée par l’erreur.

Taux de conversion utilisant des lignes de code

Le taux de conversion utilisant des lignes de code comme unités est beaucoup plus simple à calculer.

  • Nombre total de lignes de code : 5

  • Lignes de code contenant des éléments non pris en charge : 1

  • Résultat : 80 %

Le taux de conversion de LOC dépend du format du code.

Lors de l’utilisation de lignes de code comme unité, le taux de conversion dépend fortement du format du code d’entrée. Par exemple, les deux exemples de code suivants sont équivalents, mais dans le premier cas, tout le code est placé dans la même ligne et dans le second cas, le code est divisé en 5 lignes de code.

SELECT col1, !error_col FROM table1;
```
```none
SELECT
   col1,
   !error_col
 FROM
    table1;
Copy

Notez que la deuxième colonne à laquelle il est fait référence dans SELECT présente une erreur car elle commence par un caractère non valide. Dans le premier cas, comme tout le code se trouve dans la même ligne, le taux de conversion est de 0 %. Mais dans le second cas, comme le code est divisé, une seule ligne de code est pénalisée et le taux de conversion est donc de 80 %.

Différences de taux de conversion

Il peut y avoir des différences dans les résultats de la conversion d’une même migration entre différents systèmes d’exploitation.

Cela est dû au fait que, la plupart du temps, Microsoft Windows utilise des sauts de lignes CRLF dans ses fichiers. Ce format utilise les caractères \r\n, mais UNIX OS uniquement \n(LF). . En raison de cette différence de format, lorsque notre processeur de code lira les fichiers d’entrée, il comptera le format CRLF comme deux caractères et un seul dans les fichiers LF. Ces différences de comptage génèrent des résultats différents dans les taux de conversion, plus précisément dans les expressions de chaînes présentes dans votre code.

Pour éviter ce problème, vous pouvez utiliser Visual Studio Code ou des outils similaires pour modifier le format de saut de ligne.

Ventilation au niveau des fichiers et des objets

SQL - Fichiers

Fichier

Taux de conversion

Lignes de code

Quantité totale d’objets

Erreurs d’analyse

SQL

42%

20

2

3

Dans cette section, vous obtiendrez les informations de synthèse de l’évaluation globale pour tous les fichiers SQL.

  • Taux de conversion du code : Il s’agit d’une estimation du taux de conversion basée sur les caractères des fichiers SQL donnés.

  • Ligne de code : Nombre de lignes de code du fichier SQL donné.

  • Quantité totale d’objets : Nombre total d’objets identifiés dans le fichier SQL.

  • Erreurs d’analyse : Nombre total d’erreurs d’analyse du fichier SQL.

Avertissement

Les objets non reconnus seront également comptabilisés comme des erreurs d’analyse des fichiers SQL.

Avertissement

Le taux de conversion du code peut différer du taux de conversion des objets identifiés car il prend également en compte les objets non reconnus.

SQL - Objets identifiés

Objet

Taux de conversion

Lignes de code

Quantité totale d’objets

Erreurs d’analyse

Tables

67%

5

1

1

Vues

57%

7

1

1

Procédures

-

0

0

0

Fonctions

N/A

N/A

N/A

N/A

Note

Si N/A est indiqué dans la table ci-dessus, cela signifie que le type d’objet n’est pas pris en charge par Snowflake, très probablement pour des raisons architecturales. Ces objets sont commentés dans le code généré et ne pénalisent pas le taux de conversion.

Note

Si le champ Taux de conversion contient un « - », cela signifie que l’ensemble actuel des fichiers que vous avez migrés ne contenait aucune instance de l’objet spécifié.

Dans cette section, vous obtiendrez les informations relatives à l’évaluation de tous les objets identifiés divisés par les objets DDL tels que les tables, les vues, les procédures, etc.

Avertissement

S’il y a un code que l’analyseur n’a pas pu traiter, l’objet entier sera comptabilisé comme Unrecognized Object et n’apparaîtra donc pas ici

  • Taux de conversion du code : Il s’agit d’une estimation du taux de conversion basée sur les caractères des objets identifiés tels que la table, la vue, la procédure, etc.

  • Ligne de code : Nombre de lignes de code de chaque type d’objet identifié.

  • Quantité totale d’objets : Nombre pour chaque type d’objet identifié.

  • Erreurs d’analyse : Nombre d’erreurs d’analyse qui se sont produites dans chaque type d’objet identifié.

Exemple : Pour les 2 tables présentes dans le code source, l’un est un objet non reconnu et l’autre est un objet identifié. Le taux de conversion de cette table de 5 lignes de code est de 75 % en raison d’une erreur d’analyse.

Répartition des problèmes

Répartition des problèmes table

Dans cette page, vous obtiendrez le nombre de problèmes uniques et la liste des problèmes classés par gravité dans un ordre descendant

Par exemple, pour le code source donné, nous avons 2 problèmes critiques liés à des erreurs d’analyse et un problème de gravité moyenne lié à la fonction non prise en charge.

Note

Seules les erreurs de gravité Moyenne/Élevée/Critique affecteront le taux de conversion actuel. Les avertissements ne sont que des informations.