17.00 - 17.05 - 多次元ARRAYおよびVARRAY 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
日本語 (日本)
多次元ARRAY/VARRAY UDTを作成すると、Teradata Databaseは以下の追加のUDT関連機能を自動的に生成します。
  • 多次元型のデータ変換。

    これは、多次元ARRAY/VARRAY型のデータ変換に関連付けられたfromsql機能およびtosql機能です。多次元ARRAY/VARRAY値は、VARCHAR(length)値との間で変換されます。ここで、lengthは、多次元ARRAY/VARRAYで定義された要素タイプおよび要素の合計数によって異なります。

    変換後の出力の形式設定については、ARRAY/VARRAY型の入力/出力文字列のデータ変換を参照してください。

  • コンストラクタ関数およびコンストラクタ メソッド。
    Teradata Databaseは、作成される多次元ARRAY/VARRAY型ごとに、デフォルトのコンストラクタ関数および追加のコンストラクタ メソッドを自動生成します。
    • デフォルトのコンストラクタ関数は、どのパラメータも取らず、多次元ARRAY/VARRAYデータ型のすべてのINTERVAL式のクロス製品で定義されている有効範囲を使用して、多次元ARRAY/VARRAYインスタンスをTeradata Databaseで割り振ります。INTERVAL式の形式は[lower_bound : upper_bound]または[maximum_size]になります。
      構成要素 説明
      [ lower_bound : upper_bound ] 多次元配列の範囲の境界。lower_boundupper_boundは両方とも、符号付きINTEGER値です。
      [ maximum_size ] 多次元配列の最大サイズ(最大64,256バイト)。

      Teradata Databaseは、多次元ARRAYのすべての要素を未初期化状態に設定します。これは、要素をnullに設定することとは異なります。

      ARRAY/VARRAYから任意の要素にアクセスがあった場合、Teradata Databaseは、リクエストをアボートし、リクエスト側にエラーを返します。

      多次元ARRAY/VARRAY型がDEFAULT NULLオプションを指定せずに作成されている場合にのみ、Teradata Databaseは、すべての要素を未初期化状態に設定します。

    • コンストラクタ メソッドは、多次元ARRAY/VARRAYデータ型のすべてのINTERVAL式のクロス製品で定義されたパラメータの数を最大数とする、1つ以上のパラメータを取ります。多次元配列の境界変数の定義については、直前の項目にあるテーブルを参照してください。多次元配列の境界変数の定義については、直前の項目にあるテーブルを参照してください。

      Teradata Databaseは、多次元ARRAY/VARRAYの要素値を行優先順に保管します。行優先とは、有効範囲指定の左端にある最初の次元が主次元であることを意味しており、最後の次元に向かっていくほど、次元は主でなくなっていきます。これは、任意の次元数の配列に適用されます。ほとんどのコンピュータ言語は、行優先ストレージを使用します。

      コンストラクタ メソッドは、有効範囲指定で定義されている最初の要素から始めて、多次元ARRAY/VARRAYの要素を初期化し、要素全体で処理を行優先順に続行します。

      通常、コンストラクタ メソッドには128パラメータの上限が存在しますが、多次元ARRAY/VARRAY型で指定できるパラメータの数は、多次元ARRAY/VARRAY型で定義できる要素の最大数によってのみ制限されます。多次元ARRAY/VARRAYに合計n個の要素が存在する場合、n個より多いパラメータをコンストラクタ メソッドに渡すと、Teradata Databaseはリクエストをアボートし、リクエスト側にメッセージを返します。

  • 多次元ARRAY/VARRAY型の順序付け。

    Teradata Databaseは、新たに作成された多次元ARRAY/VARRAY型用に、非常に基本的な順序付け機能を提供します。

    Teradata Databaseでは、この順序付け機能が提供されているため、ハッシュに関する問題が回避され、多次元ARRAY/VARRAY型がSETテーブルの列として可能になっています。

    多次元ARRAY/VARRAY型の個々の要素のリレーショナル比較はできますが、多次元ARRAY/VARRAYの値のリレーショナル比較はできません。実行方法の詳細について、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。

    以下のSQL DML句では、多次元ARRAY/VARRAY列を指定することはできません。
    • INTERSECT集合演算子
    • MINUS集合演算子
    • UNION集合演算子
    • DISTINCT演算子
    • WHERE句
    • ORDER BY句
    • GROUP BY句
    • HAVING句
  • 多次元ARRAY/VARRAY型のキャスト。
    Teradata Databaseは、多次元ARRAY/VARRAY型にキャスト機能を提供します。システムは、すべての多次元ARRAY/VARRAY型に、自動生成された2つのキャストを提供します。
    • VARCHARからARRAY/VARRAYへ
    • ARRAY/VARRAYからVARCHARへ

      VARCHAR文字列の形式は、キャストのソース値とターゲット値の両方とも、tosqlデータ変換およびfromsqlデータ変換の形式と同じです。これらの文字列の形式の詳細については、ARRAY/VARRAY型の入力/出力文字列のデータ変換を参照してください。

      独自のUDFを作成して、2つの多次元ARRAY/VARRAY型の要素すべてまたはそのサブセット間でキャスト操作を実行することもできます。