17.10 - DATASET型の使用方法について - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - DATASETデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1198-171K-JPN
Language
日本語 (日本)

ユーザー定義関数

CREATE/REPLACE FUNCTION文を使用して1つ以上のパラメータを含むユーザー定義関数(UDF)、またはサポートされている格納形式のDATASET戻り型を作成します。パラメータや戻り型はスカラー、集約、およびテーブルUDF、およびSQL UDFでサポートされています。戻り型がSQL UDFの戻り型の1つとして指定されている場合、RETURN式は結果が1つの型となるSQL文となります。

UDFのパラメータとしてのDATASET型はC言語、CPP言語、およびJAVA言語ではサポートされていますが、R言語ではサポートされていません。

以下のアクションはDATASET型用のデータ ディクショナリCREATE FUNCTION文で発生し、CREATE FUNCTION文で通常実行されるディクショナリの更新に加えて発生します。
  • DATASETフィールドに関するメタデータ情報を記録するためにDBC.TVField
に挿入される行はDATASET型で、UDTといくつかのエントリを共有します。FieldTypeは'DT'で、TypeIdはDATASET型に割り当てられた静的型IDに対応します。

テーブル演算子

DATASET型は、C言語およびJava言語のユーザー定義テーブル演算子でサポートされています。メタデータは外部タイプ コードDATASET_AVRO_DTまたはDATASET_CSV_DTを使用してテーブル演算子コントラクト関数に渡されます。dtype_enの型コードは次のものが含まれます。完全な定義については、sqltypes_td.hを参照してください。

typedef enum dtype_en
{
        UNDEF_DT=0,
        CHAR_DT=1,
        VARCHAR_DT=2,
        BYTE_DT=3,
        VARBYTE_DT=4,
        GRAPHIC_DT=5,
        VARGRAPHIC_DT=6, 
        BYTEINT_DT=7,
        SMALLINT_DT=8,
        INTEGER_DT=9,
        BIGINT_DT = 36,
        REAL_DT=10,
        DECIMAL1_DT=11,'
        DECIMAL2_DT=12,
        DECIMAL4_DT=13,
        DECIMAL8_DT=14, 
        DECIMAL16_DT=37,  
        DATE_DT=15,
        TIME_DT=16,
        TIMESTAMP_DT=17,
        INTERVAL_YEAR_DT=18,
        INTERVAL_YTM_DT=19,
        INTERVAL_MONTH_DT=20,
        INTERVAL_DAY_DT=21,
        INTERVAL_DTH_DT=22,
        INTERVAL_DTM_DT=23,
        INTERVAL_DTS_DT=24,
        INTERVAL_HOUR_DT=25,
        INTERVAL_HTM_DT=26,
        INTERVAL_HTS_DT=27,
        INTERVAL_MINUTE_DT=28,
        INTERVAL_MTS_DT=29,
        INTERVAL_SECOND_DT=30,
        TIME_WTZ_DT=31,
        TIMESTAMP_WTZ_DT=32,
        BLOB_REFERENCE_DT=33,
        CLOB_REFERENCE_DT=34, 
        UDT_DT=35,
        /* The 8 byte integer type (BIGINT_DT) and 
         * the 16 byte decimal type (DECIMAL16_DT) 
         * are located above and have the following
         * values:
         *
         * BIGINT_DT=36    
         * DECIMAL16_DT=37 
         */                   
        NUMBER_DT=38, 
        PERIOD_DT=39, 
        JSON_DT=40, 
        DATASET_AVRO_DT=41,
        ST_GEOMETRY_DT=42,
        MBR_DT=43,
        MBB_DT=44,
        ARRAY_DT=45,
        XML_DT = 46, 
	    DATASET_CSV_DT=47,
        FNC_DATATYPESETSIZE=48
} dtype_en;

AVROの場合、複合型は、基本型であるDATASET_AVRO_DT → BLOB_REFERENCE_DTにマッピングされます。CSVの場合、複合型は、基本型であるDATASET_CSV_DT → CLOB_REFERENCE_DTにマッピングされます。

入力データ値がテーブル演算子に送信されると、データは現在のデフォルト変換を経て転送されます。以下のテーブルに示すように、使用可能な変換型ごとにUDT_BaseInfo_t.transform_info構造体が生成されます。

変換型 データ型 Size.length
TD_DATASET_AVRO_VARBYTE VARBYTE_DT <列の名前> データ サイズ
TD_DATASET_AVRO_BLOB BLOB_REFERENCE_DT <列の名前> データ サイズ
CSVの場合、以下のテーブルに示すように、変換型にはUDT_BaseInfo_t.transform_info構造体が取り込まれます。
変換型 データ型 ..。 文字セット ..。 Size.length
TD_CSV_CLOB CLOB_REFERENCE_DT <列の名前>       データ サイズ

「変換オフ」機能はありません。UDT_BaseInfo_t構造体のudt_indicatorメンバー値は、DATASET格納形式を識別します。

10==DATASET STORAGE FORMAT AVRO

11==DATASET STORAGE FORMAT CSV

CSVの場合、UDT_BaseInfo_tのcharsetフィールドは、文字セットをLATINまたはUNICODEのいずれかとして判別します。

外部ストアド プロシージャ

CREATE/REPLACE PROCEDURE文が拡張され、サポートされている格納形式のDATASET型である1つ以上のパラメータを含む外部ストアド プロシージャを作成できます。これらの型を使用して、IN、OUT、またはINOUTパラメータを定義します。

外部ストアド プロシージャへのIN、OUT、またはINOUTパラメータとしてのDATASET型は、C言語、CPP言語、またはJAVA言語でサポートされています。R言語オプションはサポートされていません。

DATASET型のCREATE/REPLACE PROCEDURE文のデータ ディクショナリで、次のアクションが発生します。この変更は、CREATE/REPLACE PROCEDURE文で通常実行されるディクショナリの更新に加えて行なわれます。
  • DATASETフィールドに関するメタデータ情報を記録するためにDBC.TVFieldに通常挿入される行はDATASET型に強化され、UDTといくつかのエントリを共有します。FieldTypeは'DT'で、TypeIdはDATASET型に割り当てられた静的型IDに対応します。