SnowConvert: Teradataデータ型

データ型

換算テーブル

Teradata

Snowflake

注意

ARRAY

ARRAY

BIGINT

BIGINT

Snowflakeの BIGINTNUMBER(38,0)のためのエイリアスです。[Check out note]

BLOB

BINARY

8MB に制限されています。 BLOB がサポートされていない場合、警告 SSC-FDM-TD0001 が生成されます。

BYTE

BINARY

BYTEINT

BYTEINT

CHAR

CHAR

CLOB

VARCHAR

​16MB に制限されています。 CLOB がサポートされていない場合、警告 SSC-FDM-TD0002 が生成されます。

DATE

DATE

DECIMAL

DECIMAL

DOUBLE PRECISION

DOUBLE PRECISION

FLOAT

FLOAT

INTEGER

INTEGER

Snowflakeの INTEGERNUMBER(38,0) のエイリアスです。 \ [note]をチェックしてください。

INTERVAL DAY [TO HOUR | MINUTE | SECOND]

VARCHAR(20)

​加算/減算で使用される場合を除き、Snowflakeでは間隔は VARCHARです。 [以下をチェックしてください note]。

INTERVAL HOUR [TO MINUTE | SECOND]

VARCHAR(20)

​加算/減算で使用される場合を除き、Snowflakeでは間隔は VARCHARです。 [以下をチェックしてください note]。

INTERVAL MINUTE [TO SECOND]

VARCHAR(20)

​加算/減算で使用される場合を除き、Snowflakeでは間隔は VARCHARです。 [以下をチェックしてください note]。

INTERVAL SECOND

VARCHAR(20)

​加算/減算で使用される場合を除き、Snowflakeでは間隔は VARCHARです。 [以下をチェックしてください note]。

INTERVAL YEAR [TO SECOND]

VARCHAR(20)

​加算/減算で使用される場合を除き、Snowflakeでは間隔は VARCHARです。 [以下をチェックしてください note]。

JSON

VARIANT

<p> JSON の中の要素は、テーブルに挿入されたときにキー順に並びます。<br>[<a href="data-types.md#json-data-type">note</a>] をチェックしてください。</p>

MBR

---

サポート対象外

NUMBER

NUMBER(38, 18)

PERIOD(DATE)

VARCHAR(24)

期間はSnowflakeではVARCHARです。[Check out note]

PERIOD(TIME)

VARCHAR(34)

期間はSnowflakeではVARCHARです。[Check out note]

PERIOD(TIME WITH TIME ZONE)

VARCHAR(46)

期間はSnowflakeではVARCHARです。[Check out note]

PERIOD(TIMESTAMP)

VARCHAR(58)

期間はSnowflakeではVARCHARです。[Check out note]

PERIOD(TIMESTAMP WITH TIME ZONE)

VARCHAR(58)

期間はSnowflakeではVARCHARです。[Check out note]

REAL

REAL

SMALLINT

​SMALLINT

SMALLINT のSnowflakeは NUMBER(38,0)のエイリアスです。 [ note]をチェックしてください

ST_GEOMETRY

GEOGRAPHY

TIME

TIME

TIME WITH TIME ZONE

TIME

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP_TZ

VARBYTE

BINARY

VARCHAR

VARCHAR

XML

VARIANT

注意

整数データタイプ

整数データ型 (INTEGER, SMALLINT, BIGINT) の変換では、それぞれ同じ名前のSnowflakeのエイリアスに変換されます。これらのエイリアスはそれぞれ、 NUMBER(38,0) に変換され、整数データ型よりもかなり大きなデータ型となります。以下は、各データ型に存在しうる値の範囲の比較です。

  • Teradata INTEGER: -2,147,483,648 から 2,147,483,647

  • Teradata SMALLINT: -32768 から 32767

  • Teradata BIGINT: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

  • Snowflake NUMBER(38,0): -99999999999999999999999999999999999999~+99999999999999999999999999999999999999

警告 SSC-EWI-0036 が生成されました。

区間/期間データタイプ

Snowflakeでは、間隔と期間は文字列 (VARCHAR) として保存されます。変換の際、 SnowConvert は同じ式を文字列として再作成する UDF を作成します。警告 SSC-EWI-TD0053 が生成されます。

現在、Snowflake SnowConvert によって作成されている UDF の公開リポジトリで、 UDF の多くを見ることができます。

これらの UDF は、期間が VARCHAR で、データ/時間の部分が * で区切られて保存されていると仮定しています。例えば、 PERIOD('2018-01-01','2018-01-20') のようなTeradataの期間は、 '2018-01-01*2018-01-20' のような VARCHAR としてSnowflakeに保存されるはずです。

区間に対する VARCHAR 変換の唯一の例外は、Datetime 式から値を加算/減算するために使用される区間リテラルです。Snowflake には INTERVAL データ型はありませんが、 区間定数は 特定の目的のために存在します。例:

入力コード:

 SELECT TIMESTAMP '2018-05-13 10:30:45' + INTERVAL '10 05:30' DAY TO MINUTE;
Copy

出力コード:

 SELECT
TIMESTAMP '2018-05-13 10:30:45' + INTERVAL '10 DAY, 05 HOUR, 30 MINUTE';
Copy

区間が数値式で乗算/除算される大文字と小文字は、代わりに同等の DATEADD 関数呼び出しに変換されます。

入力コード:

 SELECT TIME '03:45:15' - INTERVAL '15:32:01' HOUR TO SECOND * 10;
Copy

出力コード:

 SELECT
DATEADD('SECOND', 10 * -1, DATEADD('MINUTE', 10 * -32, DATEADD('HOUR', 10 * -15, TIME '03:45:15')));
Copy

JSON データ型

JSON 内の要素は、テーブルに挿入されるとキー順に並びます。そのため、クエリ結果が異なる場合があります。しかし、これは JSON 内の配列の順番には影響しません。

例えば、オリジナルの JSON は:

 { 
   "firstName":"Peter",
   "lastName":"Andre",
   "age":31,
   "cities": ["Los Angeles", "Lima", "Buenos Aires"]
}
Copy

入力文字列を JSON ドキュメントとして解釈し、 VARIANT 値を生成する Snowflake PARSE_୧JSON() を使用します。入力される JSON は以下のようになります:

 { 
   "age": 31,
   "cities": ["Los Angeles", "Lima", "Buenos Aires"],
   "firstName": "Peter",
   "lastName": "Andre" 
}
Copy

「age」が最初の要素になっていることに注目してください。しかし、「都市」の配列は元の順序を維持しています。

既知の問題

問題は見つかりませんでした。