SnowConvert für Redshift: Eine Übersetzungspezifikation¶
SnowConvert für Redshift ist derzeit in der Vorschau und bietet Bewertungs- und Übersetzungsfunktionen für TABLES und VIEWS. SnowConvert kann zwar auch andere Anweisungstypen erkennen, die vollständige Unterstützung befindet sich jedoch noch in der Entwicklung.
Dieses Dokument beschreibt die Übersetzungsspezifikation für die Migration von Redshift SQL nach Snowflake unter Verwendung von SnowConvert. Es wird detailliert beschrieben, wie verschiedene Elemente transformiert werden, und es werden Beispiele zur Verdeutlichung gegeben.
Variablendeklaration
Das Redshift-Schlüsselwort
CONSTANT
, das die Neuzuweisung von Variablen verhindert, wird während der Übersetzung entfernt, da Snowflake es nicht unterstützt.Die Einschränkung
NOT NULL
wird ebenfalls entfernt, aber der Standardwert wird beibehalten, um die Funktionalität zu erhalten.
Transaktionen
TRUNCATE
,ROLLBACK
undCOMMIT
werden mit speziellen Überlegungen zur Verhaltensweise von Redshift und möglichen Problemen in Snowflake behandelt.Verschachtelte Prozeduraufrufe mit
COMMIT
oderROLLBACK
können aufgrund des Transaktionsmodells von Snowflake zu Funktionsunterschieden führen.
Cursors
DECLARE CURSOR
,OPEN CURSOR
,FETCH CURSOR
, undCLOSE CURSOR
werden in Snowflake vollständig unterstützt.
Datentypen
Die meisten grundlegenden SQL-Datentypen werden mit einigen Einschränkungen unterstützt.
Numerische, Zeichen-, Binär-, Datums-/Zeit- und andere Datentypen werden mit detaillierten Hinweisen auf mögliche Probleme zugeordnet.
INTERVAL
-Datentypen werden derzeit aufgrund von Beschränkungen in Snowflake inVARCHAR
umgewandelt.
Numerische Formatmodelle
Es werden verschiedene numerische Formatmodelle mit entsprechenden Entsprechungen in Snowflake unterstützt.
Einige Formate wie
CC
,PR
,RN
undTH
haben keine direkten Entsprechungen und erfordern möglicherweise manuelle Anpassungen.
SQL Anweisungen und Funktionen
CREATE MATERIALIZED VIEW
: Umgewandelt in dynamische Tabellen in Snowflake mit spezifischen Parametern.CREATE EXTERNAL TABLE
: Derzeit in reguläre Tabellen konvertiert, was eine Datenübertragung erfordert.CREATE VIEW
: Im Allgemeinen direkt übersetzt, aber dieWITH NO SCHEMA BINDING
-Klausel kann Probleme bereiten.CREATE DATABASE
: Verschiedene Klauseln werden mit speziellen Überlegungen für die Architektur von Snowflake behandelt.Andere Anweisungen wie
SELECT INTO
,WITH
,HAVING
,WHERE
,TOP
,JOIN
,GROUP BY
,DISTINCT
,UNION
,INTERSECT
,EXCEPT
und verschiedene DDL und DML-Anweisungen werden im Allgemeinen mit möglichen Nuancen unterstützt.Mathematische und Zeichenfolgenfunktionen werden größtenteils direkt übersetzt, mit einigen Ausnahmen und möglichen Unterschieden im Verhalten.
Fensterfunktionen wie
RANK
,DENSE_RANK
, undROW_NUMBER
werden vollständig unterstützt.Systemfunktionen wie
LOWER
,SUBSTRING
,REPLACE
,SPLIT_PART
und andere werden in der Regel mit Hinweisen auf mögliche Probleme übersetzt.IF
: SnowConvert fügt die Klammer in den Bedingungen hin und ersetzt das SchlüsselwortELSIF
durchELSEIF
, da Redshift die Klammer in den Bedingungen nicht benötigt undELSIF
das Schlüsselwort ist.SELECT INTO
: Redshift erlaubt auch SELECT INTO-Variablen, wenn die Anweisung innerhalb von gespeicherten Prozeduren ausgeführt wird, Snowflake unterstützt diese Grammatik für SELECT INTO nicht, die Ausdrücke werden nach links von INTO verschoben.Declare Refcursor:
Da Snowflake den DatentypREFCURSOR
nicht unterstützt, wird seine Funktionalität durch Konvertierung der VariableREFCURSOR
in einen TypRESULTSET
repliziert.RAISE:
In Snowflake kann diese Funktionalität mit einer benutzerdefinierten Funktion (UDF) emuliert werden, die je nach angegebenem Level einen Aufruf an die Konsole macht.Open Cursor:
Cursor-Argumente müssen für jede ihrer Verwendungen gebunden werden. SnowConvert generiert die Bindungen und ordnet die an die OPEN-Anweisung übergebenen Werte nach Bedarf neu an und wiederholt sie, um die Bindungen zu erfüllen.RETURN:
Die Konvertierung der RETURN-Anweisung von Amazon Redshift zu Snowflake ist einfach, es muss nur einNULL
zur RETURN-Anweisung auf Snowflake hinzugefügt werden.
Wichtige Überlegungen
Dieses Dokument ist noch in Arbeit, und die vollständige Unterstützung für alle Redshift-Elemente ist noch in der Entwicklung.
Testen Sie den konvertierten Code gründlich, um die Genauigkeit zu gewährleisten und alle funktionalen Unterschiede zu beseitigen.
Berücksichtigen Sie die Auswirkungen auf die Leistung und optimieren Sie Abfragen nach der Konvertierung.
Diese Übersetzungsspezifikation bietet einen umfassenden Überblick darüber, wie SnowConvert die Migration von Redshift SQL zu Snowflake handhabt. Das Verständnis dieser Veränderungen ist entscheidend für eine erfolgreiche Migration und kann Ihnen helfen, potenzielle Probleme während des Prozesses vorherzusehen und zu lösen.