17.00 - 17.05 - クライアント アプリケーションとデータ変換に関係するその他のUDT情報 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

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

データ変換グループの目的は、終始一貫して、クライアントとデータベース プラットフォームとの間でUDTを透過的に渡すことにあります。この節では、クライアント ソフトウェアがUDTを処理する方法に関する重要な点をいくつか説明します。厳密には、UDTはクライアントに渡されません。UDTは事前定義データ型にデータ変換され、その事前定義された型のデータがクライアントに渡されます。

ここで説明する情報は、全体を網羅したものではありません。さまざまなクライアント ユーティリティがUDTを処理する方法の全容を理解するには、該当するTeradata Tools and Utilitiesユーザー資料を参照してください。

最初に理解すべきことは、Teradata Tools and UtilitiesはUDTを認識しないということです。クライアント ソフトウェアはUDT値を見ませんが、Teradataプラットフォーム上のUDTを表わす事前定義データ型の値は見ます。プラットフォームのUDTをクライアントの事前定義型にデータ変換する方法は、データ変換機能の開発者の裁量にすべて委ねられています。

そのため、入力レコード レイアウトの定義(MultiLoadまたはTPumpレコード レイアウトでのFIELDコマンドなど)には、以下の事柄が当てはまります。
  • DISTINCT型のUDTの場合、基礎となる事前定義(固有)データを指定する必要があります。データベースはUDTとの間のすべての変換をデータ変換グループによって処理します。Teradata Tools and Utilitiesは、最終的に値がDISTINCT型のUDTに保存されることや、DISTINCT型のUDTから取得した値であることを認識しません。
  • STRUCTURED型のUDTの場合、次の2つのオプションがあります。
    • UDTのクライアント側での表現を、単一の事前定義データ型の1つのフィールドとして指定する。
      例えば、circleという名前のSTRUCTURED型UDTがあり、それぞれ事前定義のFLOATデータ型である3つの属性で構成されているとします。その属性は、以下のとおりです。
      • circleの中心のx座標
      • circleの中心のy座標
      • circleの半径

      1つ目のオプションで行なう場合には、3つの属性を1つのフィールドに組み合わせし、クライアント側のSTRUCTURED型UDTをcircle BYTE(24)として表現することになります。

      データベースは、外部UDT表現と内部UDT表現の間での変換をユーザー定義のデータ変換によって処理します。

    • UDTのクライアント側での表現を、3つの別個のフィールドとして指定する。
      前述のcircleの例で考えた場合、それぞれが事前定義のFLOATデータ型である3つの別個のフィールドを、たとえば次のように指定することになります。
      • x_coord  FLOAT
      • y_coord  FLOAT
      • radius   FLOAT

      次に、INSERTのVALUES句またはUPDATEのSET句にNEW式を使用して、Teradataプラットフォーム側でSTRUCTURED型のcircle UDTを構成します。詳細については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

      たとえば、circle UDTの場合、この構文は以下のとおりです。

      NEW circle(:x,:y,:r)

詳細は、該当するTeradata Tools and Utilitiesドキュメントを参照してください。