SnowConvert for Redshift: 翻訳仕様

SnowConvert for Redshiftは現在プレビュー段階であり、 TABLES と VIEWS の評価および翻訳機能が提供されています。SnowConvert は他のステートメントタイプも認識できますが、完全なサポートはまだ開発中です。

このドキュメントでは、 SnowConvert を使用してRedshift SQL をSnowflakeに移行するための翻訳仕様の概要を示し、さまざまな要素がどのように変換されるかを詳細に説明し、わかりやすいように例を示します。

変数宣言

  • 変数の再割り当てを防ぐRedshiftの CONSTANT キーワードは、Snowflakeがサポートしていないため、翻訳中に削除されます。

  • NOT NULL 制約も削除されますが、機能を維持するためにデフォルト値は保持されます。

トランザクション

  • TRUNCATEROLLBACKCOMMIT ステートメントは、Redshiftの動作とSnowflakeにおける潜在的な問題に対する特定の考慮事項に基づいて処理されます。

  • COMMIT または ROLLBACK を使用したネストされたプロシージャ呼び出しは、Snowflakeのトランザクションモデルにより機能に差異が生じる可能性があります。

カーソル

  • Snowflakeでは、 DECLARE CURSOROPEN CURSORFETCH CURSORCLOSE CURSOR が完全にサポートされています。

データ型

  • 基本的な SQL データ型のほとんどは、いくつかの制限付きでサポートされています。

  • 数値、文字、バイナリ、日付/時刻、その他のデータ型がマッピングされ、潜在的な問題についての詳細な注記が表示されます。

  • INTERVAL データ型はSnowflakeの制限により、現在 VARCHAR に変換されます。

数値形式モデル

  • 様々な数値形式モデルがSnowflakeで同等なものと共にサポートされています。

  • CCPRRNTH のようないくつかの形式は、直接等価なものがなく、手動での調整が必要な場合があります。

SQL ステートメントと関数

  • CREATE MATERIALIZED VIEW: 特定のパラメーターでSnowflake動的テーブルに変換されます。

  • CREATE EXTERNAL TABLE: 現在は通常のテーブルに変換されており、データ転送が必要です。

  • CREATE VIEW: 一般的には直訳されますが、 WITH NO SCHEMA BINDING 句が問題になることがあります。

  • CREATE DATABASE: 様々な句は、Snowflakeのアーキテクチャに対する特定の考慮事項に基づいて処理されます。

  • その他の SELECT INTOWITHHAVINGWHERETOPJOINGROUP BYDISTINCTUNIONINTERSECTEXCEPT、および様々な DDL と DML のステートメントは、潜在的なニュアンスで一般的にサポートされています。

  • 数学関数と文字列関数は、いくつかの例外と潜在的な動作の違いを除いて、ほとんどが直接翻訳されます。

  • RANKDENSE_RANKROW_NUMBER のようなウィンドウ関数は完全にサポートされています。

  • LOWERSUBSTRINGREPLACESPLIT_PART などのシステム関数は、一般的に潜在的な問題についての注記とともに翻訳されます。

  • IF: SnowConvert は条件に括弧を追加し、キーワード ELSIFELSEIF で変更します。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 がどのように処理するかについて包括的な概要を示します。これらの変換を理解することは、移行を成功させるために非常に重要であり、プロセス中に潜在的な問題を予測し、対処するのに役立ちます。