例: データ型変換のためにPythonを呼び出すSCRIPT - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL演算子およびユーザー定義関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-31
dita:mapPath
ja-JP/xwv1596137968859.ditamap
dita:ditavalPath
ja-JP/xwv1596137968859.ditaval
dita:id
B035-1210
Product Category
Software
Teradata Vantage

次の例は、戻り値リストでBYTEおよびその他のデータ型を返すスクリプト テーブル演算子を示しています。

SELECT * FROM SCRIPT(
ON script_syn_res_tab001
SCRIPT_COMMAND('cat')
DELIMITER(',')
RETURNS ('uid int', 'helen BYTE', 'word varchar(10)', 'id int')
) as srpt;

次のPythonスクリプトでは、printコマンドはBYTE(20)戻り値の16進数の数字を返します。

'mapper5.py'スクリプト:

#!/usr/bin/python
import sys
print '040A1b202EC4a256406F7D7Ffffcf3 33 22.4 abc'

mapper5.pyスクリプトを/home/tdatuserに保存するか、次のSQLでディレクトリの場所を変更します。

スクリプトをテストします。

Select * from SCRIPT(SCRIPT_COMMAND ('/home/tdatuser/mapper5.py' ) returns ('v byte(20)', 'v2
int', 'v3 float', 'v4 varchar(10)') ) as d1;

結果:

v v2 v3 v4
040A1B202EC4A256406F7D7FFFFCF30000000000 33 2.24000000000000E 001 abc
040A1B202EC4A256406F7D7FFFFCF30000000000 33 2.24000000000000E 001 abc
040A1B202EC4A256406F7D7FFFFCF30000000000 33 2.24000000000000E 001 abc
040A1B202EC4A256406F7D7FFFFCF30000000000 33 2.24000000000000E 001 abc

この例の区切り記号はタブです。区切り記号として別の文字を指定できます。例えば、区切り文字としてカンマを指定できます。

#!/usr/bin/python
import sys
print '040A1b202EC4a256406F7D7Ffffcf3,33,22.4,abc'
それに従って、SELECT文を変更します。
SELECT * from SCRIPT(SCRIPT_COMMAND ('/home/tdatuser/mapper5.py' ) delimiter(',')
returns ('v byte(20)', 'v2 int', 'v3 float', 'v4 varchar(10)') ) as d1;