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 und COMMIT werden mit speziellen Überlegungen zur Verhaltensweise von Redshift und möglichen Problemen in Snowflake behandelt.

  • Verschachtelte Prozeduraufrufe mit COMMIT oder ROLLBACK können aufgrund des Transaktionsmodells von Snowflake zu Funktionsunterschieden führen.

Cursors

  • DECLARE CURSOR, OPEN CURSOR, FETCH CURSOR, und CLOSE 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 in VARCHAR umgewandelt.

Numerische Formatmodelle

  • Es werden verschiedene numerische Formatmodelle mit entsprechenden Entsprechungen in Snowflake unterstützt.

  • Einige Formate wie CC, PR, RN und TH 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 die WITH 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, und ROW_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üsselwort ELSIF durch ELSEIF, da Redshift die Klammer in den Bedingungen nicht benötigt und ELSIF 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 Datentyp REFCURSOR nicht unterstützt, wird seine Funktionalität durch Konvertierung der Variable REFCURSOR in einen Typ RESULTSET 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 ein NULL 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.