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」フィールドは、スキーマ解決の目的では無視されます。