DECIMALデータ型指定 - Parallel Data Pump

Teradata® Parallel Data Pumpリファレンス - 17.20

Product
Parallel Data Pump
Release Number
17.20
Published
2022年10月10日
Language
日本語
Last Update
2022-11-21
dita:mapPath
ja-JP/kpf1641281806652.ditamap
dita:ditavalPath
ja-JP/ovd1619195504008.ditaval
dita:id
B035-3021
Product Category
Teradata Tools and Utilities

DECIMAL(x)およびDECIMAL(x,y)

長さ: ネットワークでは1、2、4、8、16バイトのいずれか、メインフレームではパック10進数

説明: 128ビットの2倍精度、浮動小数点

PERIODデータ型指定

期間は固定です。対象の期間での連続時間の粒度を表わします。期間はPeriodデータ型で実装されます。各期間は次の2つの要素で構成されます。
  • BEGIN(開始要素)
  • END(終了要素)
要素型は次のDateTimeデータ型の1つです。
  • PERIOD(DATE)
  • PERIOD(TIME[(n)])
  • PERIOD(TIME[(n)] WITH TIME ZONE)
  • PERIOD(TIMESTAMP[(n)])
  • PERIOD(TIMESTAMP[(n)] WITH TIME ZONE)

PERIODデータ タイプの詳細については、Teradata Vantage™ - データ タイプおよびリテラル, B035-1143を参照してください。

NULLIFのパフォーマンス

NULLIF句を数多く使用すると、Teradata TPumpを実行しているシステムでのCPU使用量が大幅に増加する場合があります。このCPU使用量の増加により、ジョブ実行の所要時間が増大する場合があります。

CPU使用量は、次の各要素が欠けている場合に、特に著しく増大します。
  • LAYOUT内のFILLERコマンド
  • 入力位置のギャップまたはオーバーラップ
  • 連結フィールド
  • DROP句

Teradata TPumpを実行しているシステムでのCPU使用量の増大を回避するためには、NULLIF式の処理をデータベースに譲渡します。

例1

次のように指定する代わりに、

...
.FIELD fc * CHAR(5) NULLIF fc = 'empty';
.FIELD fi * INTEGER NULLIF fi = 0;
... 
.DML LABEL ins; 
INSERT INTO tbl1 VALUES(...,:fc,:fi,...);

次のように指定します。

... 
.FIELD fc * CHAR(5); 
.FIELD fi * INTEGER; 
... 
.DML LABEL ins;
INSERT INTO tbl1 VALUES(...,NULLIF(:fc,'empty'),NULLIF(:fi,0),...);

例2

次の例のような、より複雑な状況では、

... 
.FIELD fs * CHAR(1) ; 
.FIELD fc * CHAR(5) NULLIF (fs <> 'M') AND (fs <> 'F'); 
.FIELD fi * INTEGER NULLIF fi < 0; 
... 
.DML LABEL ins; 
INSERT INTO tbl2 VALUES(...,:fs,:fc,:fi,...);

次のように指定します。

... 
.FIELD fs * CHAR(1) ; 
.FIELD fc * CHAR(5); 
.FIELD fi * INTEGER; 
... 
.DML LABEL ins; 
INSERT INTO tbl2 VALUES(...,:fs, 
CASE WHEN (:fs = 'M') OR (:fs = 'F') THEN :fc ELSE NULL END, 
CASE WHEN (:fi >= 0) THEN :fi ELSE NULL END,...);

ANSI/SQLのDateTimeデータ型の使用

DATEFORMコマンドを使用してDATEデータ型としてANSIDATEを指定した場合、各DATEフィールドは内部的にCHAR(10)フィールドへと変換されます。Teradata TPumpのFIELDコマンド内で列名およびフィールド名を指定するためには、ANSI/SQLのDateTimeの、TIME、TIMESTAMP、INTERVALの各データ型を、すべて固定長のCHARデータ型へと変換しなければなりません。

次の表に、ANSI/SQL DateTime指定の使用方法を示します。

ANSI/SQL DateTime指定
データ型 変数の定義 変換例
TIME

TIME (n)

n = 小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(8 +n + (n> 0の場合は1、それ以外の場合は0))

書式(n = 0): hh:mm:ss

例: 11:37:58

書式(n = 4): hh:mm:ss.ssss

例: 11:37:58.1234

TIMESTAMP

TIMESTAMP (n)

n = 小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(19 + n + (n > 0の場合は1、それ以外の場合は0))

yyyy-mm-dd hh:mm:ss

1998-09-04 11:37:58

yyyy-mm-dd hh:mm:ss.ssss

1998-09-04 11:37:58.1234
TIME WITH TIME ZONE

TIME (n) WITH TIME ZONE

n = 小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(14 + n + (n > 0の場合は1、それ以外の場合は0))

hh:mm:ss{±}hh:mm

11:37:58-08:00

hh:mm:ss.ssss{±}hh:mm

11:37:58.1234-08:00
TIMESTAMP WITH TIME ZONE

TIMESTAMP (n) WITH TIME ZONE

n = 小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(25 + n+ (n > 0の場合は1、それ以外の場合は0))

yyyy-mm-dd hh:mm:ss{±}hh:mm

1998-09-24 11:37:58+07:00

yyyy-mm-dd hh:mm:ss.ssss{±}hh:mm

1998-09-24 11:37:58.1234+07:00
INTERVAL YEAR

INTERVAL YEAR (n)

n = 桁数

有効な値: 1-4

デフォルト=2

CHAR(n+1)

yy

98

yyyy

1998
INTERVAL YEAR TO MONTH

INTERVAL YEAR (n) TO MONTH

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n+ 3)

yy-mm

98-12

yyyy-mm

1998-12
INTERVAL MONTH

INTERVAL MONTH (n)

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n)

mm

12

mmmm

0012
INTERVAL DAY

INTERVAL DAY (n)

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n)

dd

31

dddd

0031
INTERVAL DAY TO HOUR

INTERVAL DAY (n) TO HOUR

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n + 3)

dd hh

31 12

dddd hh

0031 12
INTERVAL DAY TO MINUTE

INTERVAL DAY (n) TO MINUTE

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n + 6)

dd hh:mm

31 12:59

dddd hh:mm

0031 12:59
INTERVAL DAY TO SECOND

INTERVAL DAY (n) TO SECOND

INTERVAL DAY TO SECOND (m)

INTERVAL DAY (n) TO SECOND (m)

n = 桁数

有効な値: 1-4

デフォルト= 2

m=小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR( n + 9 + m + (m > 0の場合は1、それ以外の場合は0))

dd hh:mm:ss

31 12:59:59

dddd hh:mm:ss

0031 12:59:59:59.1234
INTERVAL HOUR

INTERVAL HOUR (n)

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n)

hh

12

hhhh0012

INTERVAL HOUR TO MINUTE

INTERVAL HOUR (n) TO MINUTE

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n + 3)

hh:mm

12:59

hhhh:mm

0012:59
INTERVAL HOUR TO SECOND

INTERVAL HOUR (n) TO SECOND

INTERVAL HOUR TO SECOND (m)

INTERVAL HOUR (n) TO SECOND (m)

n = 桁数

有効な値: 1-4

デフォルト= 2

m=小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(n + 6 + m + (m > 0の場合は1、それ以外の場合は0))

hh:mm:ss

12:59:59

hhhh:mm:ss.ssss

0012:59:59.1234
INTERVAL MINUTE

INTERVAL MINUTE (n)

n = 桁数

有効な値: 1-4

デフォルト= 2

CHAR(n)

mm

59

mnnm

0059
INTERVAL MINUTE TO SECOND

INTERVAL MINUTE (n) TO SECOND

INTERVAL MINUTE TO SECOND (m)

INTERVAL MINUTE (n) TO SECOND (m)

n = 桁数

有効な値: 1-4

デフォルト= 2

m=小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(n + 3 + m + (m > 0の場合は1、それ以外の場合は0))

mm:ss

59:59

mm:ss.ssss

0059:59.1234
INTERVAL SECOND

INTERVAL SECOND

(n) INTERVAL SECOND (n,m)

n = 桁数

有効な値: 1-4

デフォルト= 2

m=小数点以下の桁数

有効な値: 0-6

デフォルト= 6

CHAR(n + m + (m > 0の場合は1、それ以外の場合は0))

ss

59

ssss.ssss

0059.1234