SnowConvert AI - Teradata - DDL¶
このセクションでは、データ定義言語要素の変換リファレンスのドキュメントをご覧いただけます。
インデックス¶
INDEX ステートメントをSnowflakeに変換するための翻訳リファレンス
警告
現在、_ Create Index _ ステートメントは変換されていませんが、解析されています。また、ソースコードにCreate index ステートメントがある場合、_ Assessment Report _ ではこれらも考慮されます。
Create Indexの例
Teradataの入力¶
注釈
アーキテクチャ上の理由により、Snowflakeはインデックスをサポートしていないため、 SnowConvert AI はインデックスの作成に関連するすべてのコードを削除します。Snowflakeは、各テーブルに、 DML 操作のパフォーマンスを高速化するマイクロパーティションを自動的に作成します。ユーザーはこれらのマイクロパーティションの作成や管理を心配する必要はありません。
通常、これだけで非常に優れたクエリパフォーマンスが得られますが、データクラスタリングキーを作成することで改善する方法もあります。Snowflakeの公式ページ には、マイクロパーティションとデータクラスタリングに関する詳細情報が掲載されています。
結合インデックス¶
説明¶
SnowConvert AI では、Teradataの結合インデックスはSnowflakeの動的テーブルに変換されます。動的テーブルを適切に設定するには、2つの重要なパラメーターを定義する必要があります。 TARGET_LAG と WAREHOUSE です。これらのパラメーターが構成オプションで指定されないままになっている場合、 SnowConvert AI では、以下の例で示されるように、変換中にあらかじめ割り当てられたデフォルト値になります。
For more information, see the Teradata Join Indexes documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
サンプルソースパターン¶
Teradata
結合インデックス
Snowflake
動的テーブル
既知の問題¶
現在、既知のエラーは検出されていません。
スキーマ¶
説明¶
TeradataからSnowflakeへの CREATE SCHEMA ステートメントの変換は、基本構文が変わらないので簡単です。
サンプルソースパターン¶
Teradata
結合インデックス
Snowflake
動的テーブル
既知の問題¶
CREATE SCHEMA の WITH プロパティ¶
Teradataの CREATE SCHEMA ステートメントに関連する WITH プロパティは、同等の機能がないためSnowflakeではサポートされていません。
Teradata
結合インデックス
Snowflake
動的テーブル
関連 EWIs¶
SSC-EWI-0073: 機能等価性レビュー保留中。
ビュー¶
Teradata VIEW ステートメントをSnowflakeに変換するための翻訳リファレンス
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
Teradataの VIEW ステートメントはSnowflake VIEW 構文に翻訳されます。
For more information, see the Teradata VIEW documentation.
サンプルソースパターン¶
ビュー変換の作成¶
Teradata
ビュー¶
Snowflake
ビュー¶
カスタムスキーマタグ¶
カスタムスキーマは、ビューの指定の前に、「sc-view」という名前の XML タグで指定します。このタグには、以下のようにスキーマの値とビュー名をピリオド「.」で区切ったもののみを記述します: <sc-view>SCHEMANAME.VIEWNAME</sc-view>
カスタムスキーマはビュー修飾子として使用され、ビューの名前と、 FROM クエリおよび内部クエリで参照されるすべてのオブジェクトは、そのカスタムスキーマを使用することになります。そのため、同じ名前で異なるカスタムタグを持つ複数のビューが存在する可能性があります。例: 同じ名前の2つのビューは、カスタムスキーマタグの情報を使って翻訳を行います。
Teradata¶
ビュー¶
Snowflake¶
Snowflakeの変換は、カスタマイズされたスキーマ名 MySchema、カスタマイズされたデータベース名 MyDatabase、または変換設定でカスタマイズされたデータベースまたはスキーマを選択しないかによって異なります。
Custom Schema¶
Custom Database¶
選択されていません¶
既知の問題¶
1.アクセスロジックの違いで行をロック¶
Snowflakeでは、オブジェクトや要素へのアクセスはユーザーと権限に基づいて行われます。
関連 EWIs¶
SSC-FDM-0007:依存関係が欠落している要素。
SSC-FDM-0019: Semantic information could not be loaded.
テーブル¶
Teradata TABLE ステートメントをSnowflakeに変換するための翻訳リファレンス
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
Teradataの TABLE ステートメントはSnowflake TABLE 構文に翻訳されます。
For more information, see the Teradata CREATE TABLE documentation.
サンプルソースパターン¶
Simple Create Table¶
Teradata
テーブル¶
Snowflake
テーブル¶
Table Kind句 - SET および MULTISET¶
Teradataのkind句は、重複行が許されるか(MULTISET)、許されないか(SET)を決定します。
Teradata¶
テーブル¶
Snowflake¶
テーブル¶
VolatileテーブルとGlobal Temporaryテーブル¶
TeradataのVolatileテーブルとGlobal Temporaryテーブルは、データの仮ストレージに使用されます。両者の違いは、Global Temporaryテーブルのテーブル定義(DDL)がData Dictionaryに保存されるのに対し、Volatileテーブルの定義は保存されない点にあります。
Teradata¶
テーブル¶
Snowflake¶
テーブル¶
データあり、データなしオプション¶
Teradata
テーブル¶
Snowflake
テーブル¶
Snowflakeの予約済みおよび限定キーワード¶
SnowConvert AI は、予約キーワードに関連する課題に対処することで、Snowflakeへのシームレスな SQL 移行を促進します。Snowflakeの 予約および制限されたキーワードのドキュメント にあるように、特定のキーワードは特別な処理を行わない限り、列名、テーブル名、エイリアスとして使用することができません。 SnowConvert AI には、このような場合に SQL コードの互換性を確保する機能が含まれています。
列名としての予約済み ANSI キーワード
列名が** ANSI またはSnowflake** 予約キーワードにマッチする場合、 SnowConvert AI は自動的に列名を二重引用符( " )で囲み、Snowflakeの構文規則に準拠します。この調整により、これらの列名を持つクエリが、手作業を必要とせずにSnowflakeで正しくコンパイルされるようになります。
例:
テーブル¶
Snowflake
テーブル¶
Snowflake固有の予約済みキーワード
Columns that match Snowflake-specific reserved keywords (for example, CONSTRAINT, CURRENT_DATE, CURRENT_TIME) may still cause compilation issues even when wrapped in quotes. SnowConvert AI detects these instances and generates a warning with code SSC-EWI-0045, prompting users to review and potentially rename these columns for compatibility.
例:
テーブル¶
Snowflake
テーブル¶
既知の問題¶
1.テーブル作成オプションがサポートされていません¶
「シンプルなテーブルの作成」の例に示すように、SnowflakeはTeradataのテーブル作成オプションをサポートしていません。それらは削除されました。
2.パフォーマンスの問題によるパーティション¶
「シンプルなテーブルの作成」の例では、パフォーマンスを考慮し、 partition by ステートメントを削除しています。
3.プライマリインデックスの移動¶
Teradataでは、プライマリインデックス制約は create table ステートメントの外側で宣言されますが、Snowflakeでは「シンプルなテーブルの作成」の例に示すように、内側で宣言する必要があります。
4.SET セマンティクスがサポートされていません¶
例「Table Kind句 - SET および MULTISET」に示すように、SnowflakeはTeradataの SET セマンティクスをサポートしていません。それらは削除されました。
5.Global Temporaryテーブルオプションはサポートされていません¶
例「VolatileテーブルとGlobal Temporaryテーブル」に示すように、SnowflakeはTeradataのGlobal Temporaryテーブルオプションをサポートしていません。削除されます。
6.Compressがサポートされていません¶
COMPRESS (value1. value2, value3) はサポートされていないため削除されました。
7.On commitがサポートされていません¶
On commit はサポートされていないため削除されました。
8.Block compressionがサポートされていません¶
Block compression はサポートされていないため削除されました。
9.Normalizeがサポートされていません¶
Normalize はサポートされていないため削除されました。
関連 EWIs¶
SSC-FDM-0009: GLOBAL TEMPORARY TABLE 機能はサポートされていません。
SSC-FDM-0019: Semantic information could not be loaded.
SSC-FDM-TD0024:セットテーブル機能はサポートされていません。
SSC-PRF-0007: CLUSTER BY パフォーマンスレビュー。
SSC-EWI-0045:列名はSnowflake予約キーワードです。
WITH DEFAULT¶
列定義のTeradata WITH DEFAULT 句をSnowflakeに変換するための翻訳リファレンス
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
Teradataの WITH DEFAULT 句は、値がない状態で挿入された列にシステムデフォルト値をセットします。この値は通常、ゼロまたは空に相当します。
構文:¶
次のテーブルは、Teradataのデータ型、Snowflakeでの対応するデータ型、およびサポートされている場合にセットされるデフォルト値を示しています。
| Teradata | Snowflake | Default Value |
|---|---|---|
| BLOB[(n)] | BYTE | NOT SUPPORTED |
| BYTE[(n)] | BYTE | NOT SUPPORTED |
| VARBYTE[(n)] | BYTE | NOT SUPPORTED |
| BIGINT | BIGINT | 0 |
| BYTEINT | BYTEINT | 0 |
| DECIMAL [(n[,m])] | DECIMAL | 0 |
| DOUBLE PRECISION | DOUBLE PRECISION | 0 |
| FLOAT | FLOAT | 0 |
| INTEGER | INTEGER | 0 |
| NUMBER(n[,m]) | NUMBER | 0 |
| NUMBER[(*[,m])] | NUMBER | 0 |
| NUMERIC [(n[,m])] | NUMERIC | 0 |
| REAL | REAL | 0 |
| SMALLINT | SMALLINT | 0 |
| DATE | DATE | CURRENT_DATE |
| TIME [(n)] | TIME | CURRENT_TIME |
| TIMESTAMP [(n)] | TIMESTAMP | CURRENT_TIMESTAMP |
| TIMESTAMP WITH TIME ZONE | TIMESTAMP_TZ | LOCALTIMESTAMP |
| INTERVAL DAY [(n)] | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO HOUR | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO MINUTE | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO SECOND | VARCHAR(21) | '0DAY' |
| INTERVAL HOUR [(n)] | VARCHAR(21) | '0HOUR' |
| INTERVAL HOUR [(n)] TO MINUTE | VARCHAR(21) | '0HOUR' |
| INTERVAL HOUR [(n)] TO SECOND | VARCHAR(21) | '0HOUR' |
| INTERVAL MINUTE [(n)] | VARCHAR(21) | '0MINUTE' |
| INTERVAL MINUTE [(n)] TO SECOND [(m)] | VARCHAR(21) | '0MINUTE' |
| INTERVAL MONTH | VARCHAR(21) | '0MONTH' |
| INTERVAL SECOND [(n,[m])] | VARCHAR(21) | '0SECOND' |
| INTERVAL YEAR [(n)] | VARCHAR(21) | '0YEAR' |
| INTERVAL YEAR [(n)] TO MONTH | VARCHAR(21) | '0YEAR' |
| CHAR[(n)] | CHAR | '' |
| CHARACTER(n) CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| CLOB | - | NOT SUPPORTED |
| CHAR VARYING(n) | VARCHAR | '' |
| LONG VARCHAR | - | NOT SUPPORTED |
| LONG VARCHAR CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| VARCHAR(n) | VARCHAR | '' |
| VARCHAR(n) CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| PERIOD(DATE) | VARCHAR(24) | NOT SUPPORTED |
| PERIOD(TIME [(n)]) | VARCHAR(24) | NOT SUPPORTED |
| PERIOD(TIMESTAMP [(n)]) | VARCHAR(24) | NOT SUPPORTED |
サンプルソースパターン¶
Teradata¶
クエリ¶
Snowflake ¶
クエリ¶
既知の問題¶
1.サポートされていない型¶
説明テーブルのテーブルに示されているように、いくつかの型はサポートされておらず、 WITH DEFAULT 句を変換してもデフォルト値はセットされません。
関連 EWIs¶
SSC-EWI-0021:Snowflakeではサポートされていません。
SSC-EWI-0036: データ型が別のデータ型に変換されました。
CREATE MACRO¶
Teradata CREATE MACRO をSnowflakeスクリプトに変換するための翻訳リファレンス
説明¶
Teradata CREATE MACRO は、よく使用されるステートメントや複雑な操作を実行するステートメントを1つ以上定義しているため、同じステートメントのシーケンスを何度も記述する必要がありません。マクロは、 EXECUTE ステートメントから呼び出されると実行されます。
For more information, see the Teradata CREATE MACRO documentation.
サンプルソースパターン¶
セットアップデータ¶
このセクションのサンプルパターンを実行するには、以下のコードが必要です。
Teradata¶
Snowflake¶
基本マクロ¶
Snowflakeにはマクロオブジェクトがないため、変換ツールはTeradataマクロをSnowflake Scriptingストアドプロシージャに変換します。また、Snowflake Scriptingでは、返される結果セットの機能を複製するために、マクロからデータセットを返すクエリが RESULTSET 変数に割り当てられ、それが返されます。
Teradata ¶
クエリ¶
結果¶
Snowflake Scripting ¶
クエリ¶
結果¶
マクロが別のマクロを呼び出す¶
SnowConvert AI は、マクロが別のマクロを呼び出すシナリオをサポートしており、他律性によって、Snowflakeの RESULT_SCAN(LAST_QUERY_ID()) から結果を取得して結果セットが返されます。
Teradata¶
クエリ¶
結果¶
Snowflake Scripting¶
クエリ¶
結果¶
結果セットのないマクロ¶
すべてのマクロが結果セットを返すわけではありません。前述のシナリオにも対応しています。
Teradata¶
クエリ¶
結果¶
Snowflake Scripting¶
クエリ¶
結果¶
マクロは複数の結果セットを返します¶
Teradataでは、マクロは1つのマクロから複数の結果セットを返すことができます。
Snowflake Scriptingプロシージャでは、1つのプロシージャにつき1つの結果セットしか返すことができません。Teradataの動作を複製するために、返す結果セットが2つ以上ある場合、それらは仮テーブルに格納されます。Snowflake Scriptingプロシージャは、仮テーブルの名前を含む配列を返します。
Teradata¶
クエリ¶
結果セット1¶
結果セット2¶
Snowflake Scripting¶
クエリ¶
結果セット1¶
Visualize Result Sets¶
上記のプロシージャをSnowflake上で実行すると、仮テーブル名が格納された配列が返されます。
[ "RESULTSET_93D50CBB_F22C_418A_A88C_4E1DE101B500", "RESULTSET_6BDE39D7_0554_406E_B52F_D9E863A3F15C"]
Teradataのように結果セットを表示するには、以下のクエリを実行する必要があります。
クエリ¶
結果セット1¶
結果セット2¶
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
CREATE PROCEDURE¶
Teradata CREATE PROCEDURE をSnowflakeスクリプトに変換するための翻訳リファレンス
説明
Teradataの CREATE PROCEDURE および REPLACE PROCEDURE ステートメントは、ストアドプロシージャの実装を生成または置換し、コンパイルします。
For more information, see the Teradata CREATE PROCEDURE and REPLACE PROCEDURE documentation.
サンプルソースパターン¶
セットアップデータ¶
このセクションのサンプルパターンを実行するには、以下のコードが必要です。
Teradata¶
Snowflake¶
基本プロシージャ¶
Teradata ¶
クエリ¶
結果¶
Snowflake Scripting ¶
クエリ¶
結果¶
単一のoutパラメーター¶
Teradata¶
クエリ¶
結果¶
Snowflake Scripting¶
クエリ¶
結果¶
複数のoutパラメーター¶
Teradata¶
クエリ¶
結果¶
Snowflake Scripting¶
クエリ¶
結果¶
動的な結果セットを持つ複数のoutパラメーター¶
Teradata¶
クエリ¶
結果¶
 (1).png)
Snowflake Scripting¶
クエリ¶
既知の問題¶
1.SQL データアクセス
デフォルトでは、Snowflakeプロシージャは、データの読み取りや変更ステートメントを含む、あらゆる種類の SQL ステートメントの実行をサポートしており、 SQL データアクセス句は関係ありません。この句はプロシージャの変換時には無視されます。
2.アセスメントレポートの最上位オブジェクト
ストアドプロシージャ内の要素(仮テーブルまたはビュー)が、アセスメントレポートで最上位オブジェクトとしてカウントされています。SnowConvert AI チームは現在、このシナリオの修正に取り組んでいます。
関連 EWIs¶
SSC-EWI-0073: 機能等価性レビュー保留中。
SSC-FDM-0020:複数の結果セットが仮テーブルに返されます。