SnowConvert for Redshift : une spécification de traduction¶
SnowConvert for Redshift est actuellement en aperçu, offrant des capacités d’évaluation et de traduction pour les TABLES et les VIEWS. Bien que SnowConvert puisse reconnaître d’autres types d’instruction, la prise en charge complète est encore en cours de développement.
Ce document décrit la spécification de traduction pour la migration de Redshift SQL vers Snowflake à l’aide de SnowConvert, en détaillant la façon dont les différents éléments sont transformés et en fournissant des exemples pour plus de clarté.
Déclaration de variables
Le mot-clé
CONSTANT
de Redshift, empêchant la réaffectation des variables, est supprimé lors de la traduction, car Snowflake ne le prend pas en charge.La contrainte
NOT NULL
est également supprimée, mais la valeur par défaut est conservée pour maintenir la fonctionnalité.
Transactions
Les instructions
TRUNCATE
,ROLLBACK
etCOMMIT
sont traitées avec des considérations spécifiques pour le comportement de Redshift et les problèmes potentiels dans Snowflake.Les appels de procédure imbriqués avec
COMMIT
ouROLLBACK
peuvent entraîner des différences fonctionnelles en raison du modèle de transaction de Snowflake.
Curseurs
DECLARE CURSOR
,OPEN CURSOR
,FETCH CURSOR
etCLOSE CURSOR
sont entièrement pris en charge par Snowflake.
Types de données
La plupart des types de données de base de SQL sont pris en charge avec certaines restrictions.
Les types de données numériques, caractères, binaires, date/heure et autres sont mappés avec des notes détaillées sur les problèmes potentiels.
Les types de données
INTERVAL
sont actuellement transformés enVARCHAR
en raison des limites de Snowflake.
Modèles de format numérique
Différents modèles de formats numériques sont pris en charge avec des équivalents dans Snowflake.
Certains formats comme
CC
,PR
,RN
etTH
n’ont pas d’équivalents directs et peuvent nécessiter des ajustements manuels.
Instructions et fonction sSQL
CREATE MATERIALIZED VIEW
: transformé en tables dynamiques Snowflake avec des paramètres spécifiques.CREATE EXTERNAL TABLE
: actuellement converti en tables régulières, ce qui nécessite un transfert de données.CREATE VIEW
: généralement traduit directement, mais la clauseWITH NO SCHEMA BINDING
peut poser problème.CREATE DATABASE
: diverses clauses sont traitées avec des considérations spécifiques à l’architecture de Snowflake.D’autres instructions telles que
SELECT INTO
,WITH
,HAVING
,WHERE
,TOP
,JOIN
,GROUP BY
,DISTINCT
,UNION
,INTERSECT
,EXCEPT
et diverses instructions DDL et DML sont généralement prises en charge avec des nuances potentielles.Les fonctions mathématiques et de chaîne sont pour la plupart traduites directement, à quelques exceptions près et avec des différences de comportement potentielles.
Les fonctions de fenêtre telles que
RANK
,DENSE_RANK
etROW_NUMBER
sont entièrement prises en charge.Les fonctions du système telles que
LOWER
,SUBSTRING
,REPLACE
,SPLIT_PART
et d’autres sont généralement traduites avec des notes sur les problèmes potentiels.IF
: SnowConvert ajoutera la parenthèse dans les conditions et remplacera le mot-cléELSIF
parELSEIF
puisque Redshift ne requiert pas la parenthèse dans les conditions et queELSIF
est le mot-clé.SELECT INTO
: Redshift autorise également les variables SELECT INTO lorsque l’instruction est exécutée à l’intérieur de procédures stockées, Snowflake ne prend pas en charge cette grammaire pour SELECT INTO, les expressions sont déplacées à gauche de INTO.Declare Refcursor:
Étant donné que Snowflake ne prend pas en charge le type de donnéesREFCURSOR
, sa fonctionnalité est répliquée en convertissant la variableREFCURSOR
en un typeRESULTSET
.RAISE:
Dans Snowflake, cette fonctionnalité peut être émulée à l’aide d’une fonction définie par l’utilisateur (UDF) qui lance un appel à la console en fonction du niveau spécifié.Open Cursor:
Les arguments du curseur doivent être liés pour chacune de leurs utilisations, SnowConvert générera les liaisons, et réordonnera et répétera les valeurs passées à l’instruction OPEN si nécessaire pour satisfaire les liaisons.RETURN:
La conversion de l’instruction return d’Amazon Redshift vers Snowflake est simple, il suffit d’envisager l’ajout d’unNULL
à l’instruction return sur Snowflake.
Considérations clés
Ce document est un travail en cours, et la prise en charge complète de tous les éléments de Redshift est encore en cours de développement.
Testez minutieusement le code converti afin d’en garantir l’exactitude et de remédier aux éventuelles différences fonctionnelles.
Tenez compte des implications en termes de performance et optimisez les requêtes après la conversion.
Cette spécification de traduction donne un aperçu complet de la manière dont SnowConvert gère la migration de Redshift SQL vers Snowflake. La compréhension de ces transformations est cruciale pour une migration réussie et peut vous aider à anticiper et à résoudre les problèmes potentiels au cours du processus.