17.10 - SchemaMatch構文 - 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
日本語 (日本)
SchemaMatch ( schema_expression, schema_expression )

構文要素

schema_expression
スキーマ仕様に準拠するTeradata CHAR/VARCHAR/CLOB/JSONとして評価される任意の式。
この関数に渡される2つの値は、有効なスキーマでなければなりません。
以下の情報はApache Avro仕様に基づくものであり、Teradata固有の情報ではありません。Teradataでは、一致するスキーマに関するApacheの定義を実装しています。
この関数では、最初に渡される値はwriter'sスキーマと見なされ、2番目に渡される値はreader'sスキーマと見なされます。両方とも有効なAvroスキーマであり、値はCHAR/VARCHAR/CLOB/JSON型にする必要があります。
一致させるには、次のいずれかの条件を満たす必要があります。
  • どちらのスキーマも、項目型が一致している配列型である。
  • どちらのスキーマも、値型が一致しているマップである。
  • どちらのスキーマも、名前が一致している列挙型である。
  • どちらのスキーマも、サイズと名前が固定で一致している。
  • 両方のスキーマが同じ名前を持つレコードである。
  • いずれかのスキーマがUNIONである。
  • 両方のスキーマが同じプリミティブ型を持っている。
  • 次の場合、ライターのスキーマがリーダーのスキーマに昇格されることがあります。
    • INTは、LONG、FLOAT、またはDOUBLEに昇格できます。
    • LONGは、FLOATまたはDOUBLEに昇格できます。
    • FLOATはDOUBLEに昇格できます。
    • フィールドの順序は異なる場合があります。フィールドは名前で照合されます。
    • 両方のレコードに同じ名前のフィールドがある場合、スキーマは再帰的に解決されます。
    • リーダーのレコード内に存在しない名前のフィールドがライターのレコードに含まれている場合、そのフィールドについてライターの値は無視されます。
    • リーダーのレコード スキーマに、デフォルト値を含むフィールドがあり、ライターのスキーマに同じ名前のフィールドがない場合、リーダーのスキーマ フィールドのデフォルト値を使用します。
    • リーダーのレコード スキーマに、デフォルト値のないフィールドがあり、ライターのスキーマに同じ名前のフィールドがない場合、スキーマは一致しません。
  • 両方が列挙型でライターのシンボルがリーダーの列挙型に存在しない場合、スキーマは一致しません。
  • 両方が配列の場合: 解決アルゴリズムは、リーダーとライターの配列項目スキーマに再帰的に適用されます。
  • 両方がマップの場合: 解決アルゴリズムは、リーダーとライターの値スキーマに再帰的に適用されます。
  • 両方ともUNIONである場合:選択したライターのUNIONスキーマに一致するリーダーのUNIONの最初のスキーマがライターのスキーマに対して再帰的に解決される。何も一致しない場合、スキーマは一致しません。
  • リーダーのスキーマはUNIONであるが、ライターのスキーマがUNIONではない場合、ライターのスキーマに一致するリーダーのUNIONの最初のスキーマがライターのスキーマに対して再帰的に解決されます。何も一致しない場合、スキーマは一致しません。
  • ライターのスキーマはUNIONであるが、リーダーのスキーマがUNIONではない場合:
    • リーダーのスキーマは、選択したライターのスキーマに一致する場合、それに対して再帰的に解決されます。
    • 一致しない場合、スキーマは一致しません。
  • スキーマの「doc」フィールドは、スキーマ解決の目的では無視されます。