SnowConvert: Teradata¶
SnowConvert for Teradataとは¶
SnowConvert は、 Teradata SQL、 BTEQ、およびその他のTeradata固有のスクリプト(Fastload、Multiload、 TPump、 TPT ファイルなど)を理解し、このソースコードを関数的に等価な Snowflake コードに変換するソフトウェアです。
変換タイプ¶
具体的には、 SnowConvert for Teradataは以下の変換を実行します。
Teradata SQL からSnowflake SQL へ¶
SnowConvert はTeradataのソースコードを理解し、ソースコード内のデータ定義言語(DDL)、データ操作言語(DML)、および関数をSnowflakeターゲット内の対応する SQL に変換します。SnowConvert は、これらの3つの拡張子 .sql、.dml、ddl のいずれかのソースコードを移行できます。
TeradataストアドプロシージャからSnowflake SQL に組み込まれた JavaScript へ¶
SnowConvert は、Teradataストアドプロシージャ(通常は SQL で記述)を取得し、Snowflake SQL に埋め込まれた JavaScript に変換します。Teradataの CREATE PROCEDURE および REPLACE PROCEDURE 言語は、Snowflakeの CREATE OR REPLACE PROCEDURE 言語に置き換えられます。JavaScript はスクリプト言語として呼び出され、内部ステートメントはすべて JavaScript に変換されます。
Teradata BTEQ、Fastload、Multiload、および TPT からPythonへ¶
Basic Teradata Query(BTEQ)は、Teradata独自のスクリプト言語です。すべての BTEQ スクリプトファイルはPythonスクリプトに変換されます。変換されたスクリプトからヘルパークラスが呼び出され、ソースとターゲットの間の機能等価性が作成されます。Pythonヘルパーの詳細情報は、 翻訳参照ページ をご覧ください。BTEQ は、Snowflake環境の外からバッチ実行することができます。PythonスクリプトをSnowflakeに直接接続する 方法の詳細をご覧ください。
BTEQ データファイルは、Teradataが作成した他の複数の独自データ型の基盤でもあります。
Fastload
Multiload
TPUMP
これらのファイルタイプはそれぞれ、 BTEQ の拡張子です。SnowConvert はこれらのファイルタイプをPythonに変換します。
これらの変換はそれぞれ、Snowflakeで使用するために最も関数的に等価な出力が得られるように最適化されています。SnowConvert が提供する変換機能の種類の詳細情報については、包括的な SQL 参照ガイド でツールに関する詳細をご覧ください。
SnowConvert 用語集¶
これらのコード変換のマジックに没頭する前に、ここで用語/定義のいくつかを紹介し、さまざまなドキュメントでこれらが使用されるときにその意味が分かるようにしておきます。
SQL (構造化クエリ言語): 大半の現代的なデータベースアーキテクチャーにおけるデータの保存、操作、検索のための標準言語。
BTEQ (Batch Teradata Query): BTEQ は、Teradata用の最初のユーティリティおよびクエリツールです。
TPT (Teradata Parallel Transporter): TPT は、Teradataデータベースから、またはTeradataデータベースへのデータの読み込みとエクスポートに関連するすべてのアクティビティのためのワンストップツールを作成することを目的とした新世代のユーティリティツールです。
SnowConvert: Teradataファイルを安全かつ自動的にSnowflakeクラウドデータプラットフォームに変換するソフトウェアです。
変換ルールまたは変換ルール: SnowConvert は、ソースコードの一部を期待されるターゲットコードに変換できるようにするルールです。
解析: 解析または構文解析は、ソースコードを理解し、変換ルールを処理するための内部データ構造を構築するために、 SnowConvert によって行われる初期処理です。
次のページでは、 SnowConvert for Teradataでどのような変換が可能かについて詳しくご紹介します。始める準備ができたら、このドキュメントの はじめるにあたり ページに移動します。SnowConvert に関する一般的な情報については、 SnowConvert for Teradata の情報ページをご覧ください。
翻訳サンプル¶
Teradata SQL ステートメント
-- CREATE TABLE DDL
CREATE SET TABLE TABLE1,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC,
Col2 BYTEINT CHECK ( CurrentFlag IN (0 ,1 ) ) NOT NULL,
COL3 DATE FORMAT 'yyyy-mm-dd',
COL4 BLOB(2097088000),
COL5 BYTEINT,
COL7 INTEGER NOT NULL COMPRESS (1 ,2 ,3 ,4),
COL8 INTERVAL HOUR(2) TO MINUTE
);
-- REPLACE VIEW DDL
REPLACE VIEW VIEW1 AS
SELECT * FROM TABLE1
UNION ALL
SELECT MAX(COL1) FROM TABLE1;
変換されたSnowflake SQL コード:
-- CREATE TABLE DDL
--** SSC-FDM-TD0024 - SET TABLE FUNCTIONALITY NOT SUPPORTED. TABLE MIGHT HAVE DUPLICATE ROWS **
CREATE OR REPLACE TABLE TABLE1
(
COL1 VARCHAR(15) COLLATE 'en-cs',
Col2 BYTEINT
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
CHECK ( CurrentFlag IN (0 ,1 ) ) NOT NULL,
COL3 DATE,
COL4 BINARY /*** SSC-FDM-TD0001 - COLUMN CONVERTED FROM BLOB DATA TYPE ***/,
COL5 BYTEINT,
COL7 INTEGER NOT NULL,
COL8 VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL HOUR(2) TO MINUTE DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
-- REPLACE VIEW DDL
CREATE OR REPLACE VIEW VIEW1
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
AS
SELECT
* FROM
TABLE1
UNION ALL
SELECT
MAX(COL1) FROM
TABLE1;
この変換された SQL では、次のような多くのものが変換されていることが分かります。
ユーザーがスキーマを指定しない場合(スキーマの指定方法を参照)、デフォルトですべてのテーブル名とビュー名に
PUBLIC
スキーマを追加。CREATE SET TABLE
からCREATE TABLE
へREPLACE VIEW
からCREATE OR REPLACE VIEW
へデータ型:
BLOB
からBINARY
へ、またINTERVAL
からVARCHAR
へデータ型属性:
NOT CASESPECIFIC
からCOLLATE
へTeradata SQL のうち、
NO BEFORE JOURNAL
、NO AFTER JOURNAL
、CHECKSUM
、COMPRESS
、DEFAULT MERGEBLOCKRATIO
など、Snowflakeのアーキテクチャが原因のためにSnowflake内で不要な部分を削除。