SnowConvert for Redshift: 翻訳仕様¶
SnowConvert for Redshiftは現在プレビュー段階であり、 TABLES と VIEWS の評価および翻訳機能が提供されています。SnowConvert は他のステートメントタイプも認識できますが、完全なサポートはまだ開発中です。
このドキュメントでは、 SnowConvert を使用してRedshift SQL をSnowflakeに移行するための翻訳仕様の概要を示し、さまざまな要素がどのように変換されるかを詳細に説明し、わかりやすいように例を示します。
変数宣言
変数の再割り当てを防ぐRedshiftの
CONSTANT
キーワードは、Snowflakeがサポートしていないため、翻訳中に削除されます。NOT NULL
制約も削除されますが、機能を維持するためにデフォルト値は保持されます。
トランザクション
TRUNCATE
、ROLLBACK
、COMMIT
ステートメントは、Redshiftの動作とSnowflakeにおける潜在的な問題に対する特定の考慮事項に基づいて処理されます。COMMIT
またはROLLBACK
を使用したネストされたプロシージャ呼び出しは、Snowflakeのトランザクションモデルにより機能に差異が生じる可能性があります。
カーソル
Snowflakeでは、
DECLARE CURSOR
、OPEN CURSOR
、FETCH CURSOR
、CLOSE CURSOR
が完全にサポートされています。
データ型
基本的な SQL データ型のほとんどは、いくつかの制限付きでサポートされています。
数値、文字、バイナリ、日付/時刻、その他のデータ型がマッピングされ、潜在的な問題についての詳細な注記が表示されます。
INTERVAL
データ型はSnowflakeの制限により、現在VARCHAR
に変換されます。
数値形式モデル
様々な数値形式モデルがSnowflakeで同等なものと共にサポートされています。
CC
、PR
、RN
、TH
のようないくつかの形式は、直接等価なものがなく、手動での調整が必要な場合があります。
SQL ステートメントと関数
CREATE MATERIALIZED VIEW
: 特定のパラメーターでSnowflake動的テーブルに変換されます。CREATE EXTERNAL TABLE
: 現在は通常のテーブルに変換されており、データ転送が必要です。CREATE VIEW
: 一般的には直訳されますが、WITH NO SCHEMA BINDING
句が問題になることがあります。CREATE DATABASE
: 様々な句は、Snowflakeのアーキテクチャに対する特定の考慮事項に基づいて処理されます。その他の
SELECT INTO
、WITH
、HAVING
、WHERE
、TOP
、JOIN
、GROUP BY
、DISTINCT
、UNION
、INTERSECT
、EXCEPT
、および様々な DDL と DML のステートメントは、潜在的なニュアンスで一般的にサポートされています。数学関数と文字列関数は、いくつかの例外と潜在的な動作の違いを除いて、ほとんどが直接翻訳されます。
RANK
、DENSE_RANK
、ROW_NUMBER
のようなウィンドウ関数は完全にサポートされています。LOWER
、SUBSTRING
、REPLACE
、SPLIT_PART
などのシステム関数は、一般的に潜在的な問題についての注記とともに翻訳されます。IF
: SnowConvert は条件に括弧を追加し、キーワードELSIF
をELSEIF
で変更します。Redshiftは条件に括弧を必要とせず、ELSIF
がキーワードだからです。SELECT INTO
: Redshiftでは、ストアドプロシージャ内でステートメントを実行する際に、 SELECT INTO 変数を指定することもできます。Snowflakeではこの文法を SELECT INTO ではサポートしていないため、式は INTO の左側に移動します。Refcursor宣言:
SnowflakeはREFCURSOR
データ型をサポートしていないため、REFCURSOR
変数をRESULTSET
型に変換することでその機能を複製します。RAISE:
Snowflakeでは、指定されたレベルに応じてコンソールへの呼び出しを行うユーザー定義関数(UDF)を使用して、この機能をエミュレートできます。カーソルを開く:
カーソル引数は、その用途ごとにバインドする必要があります。 SnowConvert はバインドを生成し、バインドを満たすために必要に応じて OPEN ステートメントに渡された値を並べ替えたり、繰り返したりします。RETURN:
Amazon RedshiftからSnowflakeへのreturnステートメントの変換は簡単で、SnowflakeのreturnステートメントにNULL
を追加することだけを検討します。
キーポイント
このドキュメントは進行中であり、すべてのRedshift要素に対する完全なサポートはまだ開発中です。
変換されたコードが正確であることを確認し、機能的な違いに対処するために徹底的にテストします。
パフォーマンスへの影響を考慮し、変換後のクエリを最適化します。
この翻訳仕様では、Redshift SQL からSnowflakeへの移行を SnowConvert がどのように処理するかについて包括的な概要を示します。これらの変換を理解することは、移行を成功させるために非常に重要であり、プロセス中に潜在的な問題を予測し、対処するのに役立ちます。