SnowConvert: Bewertungsbericht¶
Allgemeine Zusammenfassung¶
Der Zweck dieses Dokuments ist es, den Benutzern eine Anleitung zum Verständnis der zusammengefassten Ergebnisse der SnowConvert-Konvertierungstools zu geben. Sie werden durch die verschiedenen zurückgegebenen Metriken geführt und erfahren, wie diese Metriken verwendet werden können, um den erreichten Automatisierungsgrad und den Umfang des manuellen Aufwands zu bestimmen, der erforderlich ist, um den ausgegebenen Code in funktional gleichwertigen Snowflake-Code umzuwandeln.
Die meisten der in diesem Dokument vorgestellten Konzepte werden bereits auf der Hauptseite des Berichts erläutert. Aber hier finden Sie weitere hilfreiche Informationen zu den wichtigsten Informationen des obigen Bildes.
Total Parsing Errors: Die Anzahl der Fälle, in denen das Konvertierungstool Textfragmente gefunden hat, die nicht als syntaktisch korrekte Elemente für die zu konvertierende Ausgangssprache erkannt werden konnten. Ein Parsing-Fehler kann eine kleine oder große Auswirkung haben. Es ist wichtig, die Anzahl der LOCs (Lines of Code, Codezeilen) zu bestimmen, die von Parsing-Fehlern betroffen sind, und wie hoch ihr Anteil an der gesamten Workload ist. Manchmal können Parsing-Fehler aufgrund von Codierungsproblemen auftreten oder weil die Workload eine gewisse Vorbereitung erfordert.
Code Conversion Rate: Die Konvertierungsrate ist der Prozentsatz des gesamten Quellcodes, der von SnowConvert erfolgreich in funktional gleichwertigen Snowflake-Code konvertiert wurde. Jedes Mal, wenn das Tool nicht unterstützte Elemente identifiziert, d. h. Fragmente im Eingabequellcode, die nicht in Snowflake konvertiert wurden, wirkt sich dies auf die Konvertierungsrate aus.
Identified Objects: Die Anzahl aller DDL-Objekte der obersten Ebene (Tabelle, Ansicht, Prozedur usw.), die von SnowConvert identifiziert wurden. Wenn es bei einem Objekt einen Parsing-Fehler gibt, ist es kein identifiziertes Objekt. \ Beispiel: Die ersten Objekte von Zeile 1 bis Zeile 6. Offensichtlich liegt ein Parsing-Fehler vor, sodass SnowConvert dies nicht als Objekt identifizieren kann.
Modi der Konvertierungsrate¶
Wie bereits erwähnt, wird die Konvertierungsrate verringert, wenn ein Element als nicht unterstützt markiert ist (aufgrund von Parsing-Fehlern oder weil es in Snowflake nicht unterstützt wird). Wie stark die Konvertierungsrate für jedes nicht unterstützte Element verringert wird, hängt von der gewählten Codeeinheit ab. Es stehen zwei Einheiten zur Verfügung: Zeichen oder Zeilen.
Konvertierungsrate anhand von Codezeichen¶
Wenn Codezeichen ausgewählt werden, stellt die Gesamtzahl der Zeichen in der Eingabequelle die Gesamtzahl der zu konvertierenden Einheiten dar. Wenn also insgesamt 100 Zeichen vorhanden sind und es nur ein nicht unterstütztes Element mit 10 Zeichen gibt, beträgt die Konvertierungsrate 90 %. Die Konvertierungsrate unter Verwendung von Zeichen ist präziser, da nur die Zeichen als nicht unterstützt gewertet werden, die zu den nicht unterstützten Elementen gehören, aber sie ist schwieriger zu berechnen und zu verstehen.
Konvertierungsrate anhand von Codezeilen¶
Wenn Codezeilen gewählt werden (Standardoption), stellt die Anzahl der Codezeilen im Eingabequellcode die zu konvertierenden Gesamteinheiten dar, und Zeilen, die nicht unterstützte Elemente enthalten, werden vollständig als nicht unterstützte Codeeinheiten betrachtet. Wenn also derselbe Eingabecode mit diesen 100 Zeichen in 5 Codezeilen aufgeteilt wird und das nicht unterstützte Element nur in einer Zeile vorkommt, beträgt die Konvertierungsrate 80 %; die gesamte Zeile, die das nicht unterstützte Element enthält, wird ebenfalls als nicht unterstützt betrachtet. Die Konvertierungsrate anhand von Zeilen ist zwar einfacher zu verfolgen, aber weniger genau, da ganze Codezeilen mit nicht unterstützten Elementen als nicht unterstützt gewertet werden (auch wenn es in derselben Zeile andere unterstützte Elemente gibt).
Das nächste Beispiel zeigt, wie die Konvertierungsrate anhand beider Metriken berechnet wird.
Beispiel für eine Konvertierungsrate¶
Eingabequellcode
--Comment123
CREATE TABLE Table1(
Prefix_Employee_Name CHAR(25),
!ERROR_Col,
Prefix_Employee_Sal DECIMAL(8))
Der obige Code hat genau 100 Codezeichen, da Leerzeichen und Zeilenumbrüche nicht als Codezeichen gelten. Der Kommentar über Table1
gehört zu der Tabelle und ist Teil dieser 100 Zeichen. Dies ist der Ausgabecode, den SnowConvert für diese Eingabe generiert.
Ausgabequellcode
--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"}}'
;
Die zweite Spalte der Tabelle weist einen Parsing-Fehler auf und ist daher ein nicht unterstütztes Element. Werfen wir einen Blick darauf, wie die Konvertierungsrate anhand der beiden verfügbaren Einheiten verringert wird.
Konvertierungsrate anhand von Codezeichen¶
Hier ist die Aufschlüsselung der Zeichen im Eingabecode.
--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*/
Gesamtzahl der Codezeichen: 100
Codezeichen in nicht unterstützten Elementen: 10
Ergebnis: 90,00 %
Bemerkung
Beachten Sie, dass es in der 4. Zeile 11 Zeichen gibt, aber nur 10 als nicht unterstützt markiert sind. Das liegt daran, wie der Parsing-Wiederherstellungsmechanismus funktioniert. Wenn der Parser auf einen Fehler stößt, betrachtet er alle folgenden Zeichen bis zum nächsten Trennzeichen, in diesem Fall das Komma (,), als Teil des Fehlers. Das bedeutet, dass die Anzahl der nicht unterstützten Zeichen in jedem Eingabecode stark vom Typ des Parsing-Fehler abhängen kann. In einigen Fällen ist der Parser in der Lage, den Fehler in der Nähe des eigentlichen Fehlers zu finden, aber in anderen Fällen kann leider eine Menge Code im Fehler enthalten sein.
Konvertierungsrate anhand von Codezeilen¶
Die Konvertierungsrate mit Codezeilen als Einheiten ist viel einfacher zu berechnen.
Gesamtzahl der Codezeilen: 5
Codezeilen mit nicht unterstützten Elementen: 1
Ergebnis: 80 %
Die LOC-Konvertierungsrate hängt davon ab, wie der Code formatiert ist.¶
Wenn Sie Codezeilen als Einheit verwenden, hängt die Konvertierungsrate stark davon ab, wie der Eingabecode formatiert ist. Die folgenden zwei Codebeispiele sind beispielsweise gleichwertig, aber im ersten Fall steht der gesamte Code in einer Zeile, und im zweiten Fall ist der Code in 5 Zeilen aufgeteilt.
SELECT col1, !error_col FROM table1;
```
```none
SELECT
col1,
!error_col
FROM
table1;
Beachten Sie, dass die zweite Spalte, die in der SELECT-Anweisung referenziert wird, einen Fehler aufweist, weil sie mit einem ungültigen Zeichen beginnt. Im ersten Fall beträgt die Konvertierungsrate 0 %, da der gesamte Code in derselben Zeile steht. Aber im zweiten Fall wird nur eine Codezeile als ungültig bewertet, da der Code aufgeteilt ist, und daher beträgt die Konvertierungsrate 80 %.
Unterschiede bei der Konvertierungsrate¶
Es kann Unterschiede in den Konvertierungsergebnissen für dieselbe Migration zwischen verschiedenen Betriebssystemen geben.
Dies ist darauf zurückzuführen, dass Microsoft Windows in den meisten Fällen CRLF-Zeilenumbrüche in seinen Dateien verwendet. Dieses Format verwendet die Zeichen \r\n
, aber UNIX OS nur \n
(LF). \ Aufgrund dieses Formatunterschieds zählt unser Codeprozessor beim Lesen der Eingabedateien das CRLF-Format als zwei Zeichen und in LF-Dateien als nur ein Zeichen. Diese Zählungsunterschiede führen zu unterschiedlichen Ergebnissen bei den Konvertierungsraten, insbesondere bei Zeichenfolgenausdrücken in Ihrem Code.
Um dieses Problem zu vermeiden, können Sie Visual Studio Code oder ähnliche Tools verwenden, um das Format des Zeilenumbruchs zu ändern.
File and Object-Level Breakdown¶
SQL - Files¶
Datei |
Konvertierungsrate |
Lines of Code |
Total Object Quantity |
Parsing Errors |
---|---|---|---|---|
SQL |
42% |
20 |
2 |
3 |
In diesem Abschnitt erhalten Sie eine Zusammenfassung der Gesamtbewertung für alle SQL-Dateien
Code Conversion Rate: Dies ist eine Schätzung der Konvertierungsrate basierend auf den Zeichen der angegebenen SQL-Dateien.
Line of Code: Die Anzahl der Codezeilen für die angegebenen SQL-Dateien.
Total Object Quantity: Die Anzahl der insgesamt identifizierten Objekte der angegebenen SQL-Dateien.
Parsing Errors: Die Anzahl der gesamten Parsing-Fehler der angegebenen SQL-Dateien.
Warnung
Die nicht erkannten Objekte werden auch als Parsing-Fehler im Abschnitt SQL-Dateien gezählt
Warnung
Die Codekonvertierungsrate kann von der identifizierten Konvertierungsrate abweichen, da diese auch die nicht erkannten Objekte berücksichtigt.
SQL - Identified Objects¶
Objekt |
Konvertierungsrate |
Lines of Code |
Total Object Quantity |
Parsing Errors |
---|---|---|---|---|
Tabellen |
67% |
5 |
1 |
1 |
Ansichten |
57% |
7 |
1 |
1 |
Prozeduren |
- |
0 |
0 |
0 |
Funktionen |
N/A |
N/A |
N/A |
N/A |
Bemerkung
Wenn in der obigen Tabelle „N/A“ aufgeführt ist, bedeutet dies, dass der Objekttyp in Snowflake nicht unterstützt wird, höchstwahrscheinlich aus architektonischen Gründen. Diese Objekte sind im generierten Code auskommentiert und wirken sich nicht auf die Konvertierungsrate aus.
Bemerkung
Wenn das Feld „Conversion Rate“ ein „-“ enthält, bedeutet dies, dass der aktuelle Satz von Dateien, die Sie migriert haben, keine Instanz des angegebenen Objekts enthält.
In diesem Abschnitt erhalten Sie die Bewertungsinformationen für alle identifizierten Objekte, unterteilt nach DDL-Objekten wie Tabellen, Ansichten, Prozeduren usw.
Warnung
Wenn es einen Code gibt, den der Parser nicht verarbeiten kann, wird das gesamte Objekt als Unrecognized Object behandelt und daher hier nicht angezeigt.
Code Conversion Rate: Dies ist eine Schätzung der Konvertierungsrate auf der Grundlage der Zeichen für die identifizierten Objekte wie Tabelle, Ansicht, Prozedur usw.
Line of Code: Die Anzahl der Codezeilen für jeden Typ eines identifizierten Objekts.
Total Object Quantity: Die Anzahl für jeden Typ von identifiziertem Objekt.
Parsing Errors: Die Anzahl der Parsing-Fehler, die innerhalb jedes Typs von identifiziertem Objekt aufgetreten sind.
Beispiel: Für die 2 Tabellen, die wir im [Quellcode(../../../../../technical-documentation/issues-and-troubleshooting/functional-difference/README), haben, ist eine ein nicht erkanntes Objekt, und eine wurde erfolgreich identifiziert. Die Konvertierungsrate dieser Tabelle mit 5 Codezeilen beträgt 75 % aufgrund von 1 Parsing-Fehler.
Issues Breakdown¶
Auf dieser Seite erhalten Sie die Anzahl der eindeutigen Probleme und die Liste der Probleme, geordnet nach Schweregrad in absteigender Reihenfolge.
Zum Beispiel haben wir für den angegebenen Quellcode 2 kritische Probleme im Zusammenhang mit Parsing-Fehlern und ein Problem mittleren Schweregrades im Zusammenhang mit der nicht unterstützten Funktion.
Bemerkung
Nur Fehler mit mittlerem/hohem/kritischem Schweregrad wirken sich auf die aktuelle Konvertierungsrate aus. Warnungen dienen nur zur Information.