SnowConvert AI - Teradata

SnowConvert AI for Teradataとは

SnowConvert AI は、 Teradata SQL 、BTEQ、およびその他のTeradata固有スクリプト(Fastload、Multiload、TPump、TPT ファイルなど)を理解し、このソースコードを機能的に等価な Snowflake コードに変換するソフトウェアです。

変換タイプ

具体的には、SnowConvert AI for Teradataは以下の変換を行います。

Teradata SQL からSnowflake SQL へ

SnowConvert AI は、Teradataのソースコードを理解し、ソースコード内のデータ定義言語(DDL)、データ操作言語(DML)、および関数を、ターゲットであるSnowflake内の対応する SQL に変換します。SnowConvert AI は、 .sql、.dml、ddl の3つの拡張子のソースコードを移行できます

TeradataストアドプロシージャからSnowflake SQL に組み込まれた JavaScript へ

SnowConvert AI は、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)は、テラデータ独自のスクリプト言語です。すべての BTEQ スクリプトファイルはPythonスクリプトに変換されます。変換されたスクリプトからヘルパークラスが呼び出され、ソースとターゲットの機能的等価性が作成されます。Pythonヘルパーの詳細については、翻訳リファレンスページ をご覧ください。BTEQ はSnowflake環境外からバッチ実行できます。Pythonスクリプトを直接Snowflakeに接続する 方法の詳細についてご確認ください。

BTEQ データファイルは、Teradataが作成した他の複数の独自データ型の基盤でもあります。

  • Fastload

  • Multiload

  • TPUMP

これらのファイルタイプはそれぞれ、BTEQ の拡張です。SnowConvert AI はこれらの各ファイルタイプをPythonに変換します。

これらの変換はそれぞれ、Snowflakeで使用するために、最も機能的に等価な出力が得られるように最適化されています。SnowConvert AI が提供できる変換の威力について詳しくは、完全な SQL リファレンスガイド でツールの詳細をご確認ください。

SnowConvert AI の用語

これらのコード変換のマジックに没頭する前に、ここで用語/定義のいくつかを紹介し、さまざまなドキュメントでこれらが使用されるときにその意味が分かるようにしておきます。

  • SQL (構造化クエリ言語): 大半の現代的なデータベースアーキテクチャーにおけるデータの保存、操作、検索のための標準言語。

  • BTEQ(Basic Teradata Query): BTEQ は、Teradataの最初のユーティリティおよびクエリツールでした。

  • TPT (Teradata Parallel Transporter): TPT は、Teradataデータベースから、またはTeradataデータベースへのデータの読み込みとエクスポートに関連するすべてのアクティビティのためのワンストップツールを作成することを目的とした新世代のユーティリティツールです。

  • SnowConvert AI: Teradataファイルを安全かつ自動的にSnowflakeクラウドデータプラットフォームに変換するソフトウェア。

  • 変換ルールまたは変換ルール: SnowConvert AI がソースコードの一部から期待されるターゲットコードに変換できるようにするルール。

  • パース: パースまたは構文解析は、SnowConvert AIがソースコードを理解し、変換ルールを処理するための内部データ構造を構築するために行われる初期処理です。

次の数ページでは、SnowConvert AI for Teradataで実行できる変換の種類について詳しく説明します。始める準備ができたら、このドキュメントの はじめるにあたり ページをご覧ください。SnowConvert AI に関する一般的な詳細情報については、 SnowConvert AI 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;
Copy

変換された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;
Copy

この変換された SQL では、次のような多くのものが変換されていることが分かります。

  • ユーザーがスキーマを指定しない場合(スキーマの指定方法を参照)、デフォルトですべてのテーブル名とビュー名に PUBLIC スキーマを追加。

  • CREATE SET TABLE から CREATE TABLE

  • REPLACE VIEW から CREATE OR REPLACE VIEW

  • データ型: BLOB から BINARY へ、また INTERVAL から VARCHAR

  • データ型属性: NOT CASESPECIFIC から COLLATE

  • Teradata SQL のうち、 NO BEFORE JOURNALNO AFTER JOURNALCHECKSUMCOMPRESSDEFAULT MERGEBLOCKRATIO など、Snowflakeのアーキテクチャが原因のためにSnowflake内で不要な部分を削除。