17.00 - 17.05 - C/C++ テーブル演算子のメタデータ マッピング - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

UDTおよびCDTメタデータを含むデータ型メタデータをテーブル演算子のコントラクト関数に渡すことができます。

マッピング型と変換型の違いは次のとおりです:
マッピングの種類
列のデータ型を識別するためにコントラクト関数で使用される外部型コード。
変換型
変換関数を呼び出すことによってUDTまたはCDT値が変換される定義データ型。

デフォルトで、すべてのUDTデータ値またはCDTデータ値はデフォルトの変換形式で演算子に渡されます。これは、UDTのSQL変換型または別の事前定義型に対応します。動作は個別のUDT型またはCDT型ごとに明示的に決定されます。Javaテーブル演算子の場合、オプションは無変換形式またはアトマイズ形式で一部のUDTおよびCDTを渡すために提供されます。

また、UDT型またはCDT型はそれぞれ、テーブル演算子コントラクト関数の外部型コードにマッピングされます。各型に関する追加情報は、C/C++テーブル演算子の場合はUDT_BaseInfo_t構造、Javaテーブル演算子の場合はcom.teradata.fnc.runtime.UDTBaseInfoクラスでそれぞれ渡されます。

次のテーブルに、UDTおよびCDTに対する、Teradata SQL型から外部型コードへのコントラクト関数でのメタデータ マッピングを示します。
SQL UDTまたは複合データ型 外部型コード
ARRAY/VARRAY ARRAY_DT
Avro格納形式のDATASET DATASET_AVRO_DT
CSV格納形式のDATASET DATASET_CSV_DT
Geospatial – MBB MBB_DT
Geospatial – MBR MBR_DT
Geospatial – ST_Geometry ST_GEOMETRY_DT
JSON JSON_DT
PERIODの種類 PERIOD_DT
UDT (Distinct) UDT_DT
UDT (Structured) UDT_DT
XML XML_DT

テーブル演算子との間でUDTおよびCDT列の渡し

テーブル演算子のコントラクト関数は、渡され、取得される入力列および出力列を説明します。次のセクションでは、UDT列とCDT列がどのようにテーブル演算子に渡され、テーブル演算子から渡されるかについて詳しく説明します。

UDTおよびCDT入力メタデータの取得

コントラクト関数で、UDTまたはCDTを参照する外部型コードは入力列のparm_tx構造で渡されます。

コントラクト関数は、FNC_TblOpGetColDef関数を呼び出して入力列メタデータを取得します。この関数は、入力列ごとに型parm_txのフィールドを含む構造FNC_TblOpColumnDef_tを返します。parm_tx構造のデータ型フィールドは、外部型コードを使用してUDT列またはCDT列を識別します。

UDTおよびCDTメタデータを取得するには、次の2つの方法があります:
  • FNC_TblOpColumnDef_t構造は、FNC_TblOpGetBaseInfo関数に渡すことができます。これは各入力列に対応するUDT_BaseInfo_t構造の配列を完成します。FNC_TblOpGetBaseInfo関数は、コントラクト関数のPEでのみ呼び出し可能です。
  • 1つ以上の入力列または出力列に対しUDT_BaseInfo_t構造を返すFNC_TblOpGetUDTMetadata関数を使用できます。この関数は、PEおよびAMP vprocで呼び出し可能です。

STRUCTURED型UDTの場合、UDT_BaseInfo_t構造のフィールドはすべてのメタデータ情報を提供するには十分でないことがあります。STRUCTURED型UDTに多くの属性が含まれ、ネストの任意レベルも含まれていることがあるため、STRUCTURED型UDTの属性に関するメタデータはFNC_TblOpGetStructuredAttributeInfo関数を使用して取得されます。関数はSTRUCTURED型UDTのすべての属性に対応するattribute_info_t構造の配列を返します。

UDTおよびCDT出力メタデータの設定

コントラクト関数はFNC_TblOpSetOutputColDef関数を呼び出し、出力列グループに対しメタデータを設定します。メタデータは構造FNC_TblOpColumnDef_tに保存されます。データ型エンコードと、列のudt名でUDTまたはCDT型出力列を識別できます。これは、UDT列またはCDT列に対して出力メタデータを設定するために必要なすべての情報です。