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クラスでそれぞれ渡されます。
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列を識別します。
- 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列に対して出力メタデータを設定するために必要なすべての情報です。