Unpackの例: 末尾に特殊文字を持つIgnoreInvalid ('true') - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - Advanced SQL Engine分析関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/mld1565890109978.ditamap
dita:ditavalPath
ja-JP/mld1565890109978.ditaval
dita:id
B035-1206
Product Category
Software
Teradata Vantage

この例では、最初の仮想入力列の項目の末尾に特殊文字があります。仮想列を分離する区切り記号がありません。ColumnLengthは2です。Unpackの呼び出しにはIgnoreInvalid ('true')が含まれていますが、出力は予期されません。

入力

t2
c1
1,1919-04-05
1.1919-04-05
5,.1919-04-05
2,2019/04/05
4.,.1919-04-05
32019/04/05

SQL呼び出し

SEL * FROM Unpack (
  ON t2
  USING
  TargetColumn ('c1')
  OutputColumns ('a','b')
  OutputDataTypes ('int','date')
  ColumnLength ('2','*')
  IgnoreInvalid ('True')
) AS dt;

出力

a b
1 19/04/05
1 19/04/05
2 19/04/05

出力が予期されないのは、次に示す、Unpackが使用する内部ライブラリの動作に原因があります。

入力行 動作
1,1919-04-05 ライブラリは末尾のカンマを削除し、"1"を整数に変換し、"1919-04-05"を現在の日付に変換します。(出力行1。)
1.1919-04-05 ライブラリは末尾のピリオドを削除し、"1"を整数に変換し、"1919-04-05"を現在の日付に変換します。(出力行2。)
5,.1919-04-05 ライブラリは末尾のカンマを削除し、"5"を整数に変換しますが、"1919-04-05"を現在の日付に変換することはできません。(出力行なし。)

ColumnLength ('3','*')を使用すると、ライブラリは末尾のカンマとピリオドを削除し、"5"を整数に変換し、"1919-04-05"を現在の日付に変換して、この入力行の行を出力します。

2,2019/04/05 ライブラリは末尾のカンマを削除し、"2"を整数に変換し、"1919/04/05"を現在の日付に変換します。(出力行3。)
4.,.1919-04-05 ライブラリは"4."を整数に変換しますが、",.1919-04-05"を現在の日付に変換することはできません。(出力行なし。)
32019/04/05 ライブラリは"32"を整数に変換しますが、"019/04/05"を現在の日付に変換することはできません。(出力行なし。)