SnowConvert para Redshift: Uma especificação de conversão¶
O SnowConvert para Redshift está em fase preliminar, oferecendo recursos de avaliação e conversão para TABLES e VIEWS. Embora o SnowConvert possa reconhecer outros tipos de instrução, o suporte completo ainda está em desenvolvimento.
Este documento descreve a especificação de conversão para migrar o Redshift SQL para o Snowflake usando o SnowConvert, detalhando como vários elementos são transformados e fornecendo exemplos para maior clareza.
Declaração de variáveis
A palavra-chave
CONSTANT
do Redshift, que impede a reatribuição de variáveis, é removida durante a conversão, pois o Snowflake não a suporta.A restrição
NOT NULL
também é removida, mas o valor padrão é mantido para manter a funcionalidade.
Transações
TRUNCATE
ROLLBACK
eCOMMIT
são tratadas com considerações específicas sobre o comportamento do Redshift e possíveis problemas no Snowflake.As chamadas de procedimento aninhadas com
COMMIT
ouROLLBACK
podem resultar em diferenças funcionais devido ao modelo de transação do Snowflake.
Cursores
DECLARE CURSOR
,OPEN CURSOR
,FETCH CURSOR
eCLOSE CURSOR
são totalmente compatíveis com o Snowflake.
Tipos de dados
A maioria dos tipos de dados SQL básicos é suportada com algumas restrições.
Os tipos de dados numéricos, de caracteres, binários, de data/hora e outros são mapeados com notas detalhadas sobre possíveis problemas.
Tipos de dados
INTERVAL
são atualmente transformados emVARCHAR
devido às limitações do Snowflake.
Modelos de formato numérico
Vários modelos de formato numérico são compatíveis com equivalentes no Snowflake.
Alguns formatos como
CC
,PR
,RN
eTH
não têm equivalentes diretos e podem exigir ajustes manuais.
Instruções e funções SQL
CREATE MATERIALIZED VIEW
: Transformado em tabelas dinâmicas Snowflake com parâmetros específicos.CREATE EXTERNAL TABLE
: Atualmente convertido em tabelas regulares, o que exige a transferência de dados.CREATE VIEW
: Geralmente convertido diretamente, mas a cláusulaWITH NO SCHEMA BINDING
pode apresentar problemas.CREATE DATABASE
: Várias cláusulas são tratadas com considerações específicas para a arquitetura do Snowflake.Outras instruções, como
SELECT INTO
,WITH
,HAVING
,WHERE
,TOP
,JOIN
,GROUP BY
,DISTINCT
,UNION
,INTERSECT
,EXCEPT
e várias instruções DDL e DML são geralmente suportadas com possíveis nuances.As funções matemáticas e de cadeia de caracteres são, em sua maioria, convertidas diretamente, com algumas exceções e possíveis diferenças de comportamento.
Funções de janela como
RANK
,DENSE_RANK
eROW_NUMBER
são totalmente compatíveis.Funções de sistema como
LOWER
,SUBSTRING
,REPLACE
,SPLIT_PART
e outras são geralmente convertidas com notas sobre possíveis problemas.IF
: o SnowConvert adicionará o parêntese nas condições e alterará a palavra-chaveELSIF
porELSEIF
, pois o Redshift não exige o parêntese nas condições eELSIF
é a palavra-chave.SELECT INTO
: o Redshift também permite variáveis SELECT INTO quando a instrução é executada dentro de procedimentos armazenados; o Snowflake não oferece suporte a essa gramática para SELECT INTO, as expressões são movidas para a esquerda de INTO.Declare Refcursor:
Como o Snowflake não é compatível com o tipo de dadosREFCURSOR
, sua funcionalidade é replicada pela conversão da variávelREFCURSOR
em um tipoRESULTSET
.RAISE:
No Snowflake, essa funcionalidade pode ser emulada usando uma função definida pelo usuário (UDF) que faz uma chamada para o console dependendo do nível especificado.Open Cursor:
Os argumentos do cursor devem ser vinculados a cada um de seus usos; o SnowConvert gerará as vinculações, além de reordenar e repetir os valores passados para a instrução OPEN conforme necessário para satisfazer as vinculações.RETURN:
A conversão da instrução de retorno do Amazon Redshift para o Snowflake é direta, considerando apenas a adição de umNULL
à instrução de retorno no Snowflake.
Principais considerações
Este documento é um trabalho em andamento, e o suporte completo para todos os elementos do Redshift ainda está em desenvolvimento.
Teste minuciosamente o código convertido para garantir a precisão e solucionar quaisquer diferenças funcionais.
Considere as implicações de desempenho e otimize as consultas após a conversão.
Essa especificação de conversão fornece uma visão geral abrangente de como o SnowConvert lida com a migração do Redshift SQL para o Snowflake. Compreender essas transformações é fundamental para uma migração bem-sucedida e pode ajudá-lo a prever e resolver possíveis problemas durante o processo.