16.20 - JSON AUTO COLUMN - Teradata Vantage NewSQL Engine

Teradata Vantage™ JSONデータ型

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
created_date
2019年3月
category
プログラミング リファレンス
featnum
B035-1150-162K-JPN

INSERT...JSON文を使用してJSONデータをテーブルにシュレッディングするときに、入力されたJSONデータにテーブル内の既存の列と一致しない余分なデータが含まれている場合があります。この余分なデータを格納するために指定のJSON列を定義できます。

CREATE TABLE文で、指定されたJSON列をAUTO COLUMNとして定義して指定します。例:
CREATE TABLE MyTable
(
    pkey INTEGER,
    val  INTEGER,
    jsn  JSON CHARACTER SET LATIN AUTO COLUMN
);

また、ALTER TABLE文を使用してJSON AUTO COLUMNをテーブルに追加したり、既存のJSON列をAUTO COLUMNに変換したりすることができます。

シュレッディング中に、JSONルート オブジェクトに既存の列と一致しない属性が含まれていると、余分な属性が集約されてJSON AUTO COLUMNに挿入されます。テーブルにJSON AUTO COLUMNがない場合、余分な属性は無視されます。

例えば、次のINSERT文を発行したとします。
INSERT INTO MyTable JSON '{"pkey":123,"val":1234,"extra":"1234"}';
jsn列には、MyTableのどの列とも一致しなかった次のJSONデータが含まれます。
{"extra":"1234"}
シュレッディングしたJSONデータを元のJSONに戻すと、データが元のJSONと一致しない場合があることに注意してください。例えば、SELECT AS JSONを使用して、前のINSERT文でシュレッディングされたJSONデータを作成したとします。
SELECT AS JSON pkey, val, jsn FROM MyTable;
出力結果は、次のようなJSONデータになります。
{"pkey":123,"val":1234,"jsn":{"extra":"1234"}}

JSON AUTO COLUMN、使用上の注意

  • ほとんどの場合、JSON AUTO COLUMNは通常のJSON列のように動作します。列には、バイナリのJSON値を含め、任意の有効なJSON値を挿入できます。ただし、INSERT...JSON文で列を使用してシュレッディングするときに、テキスト形式のJSONデータのみをAUTO COLUMNにシュレッディングできます。
  • AUTO COLUMNがNULL受入れ可能で、シュレッディングされたデータに余分のデータが含まれていない場合、この列は、JSONデータで特に指定されていなければNULLになります。
  • AUTO COLUMNがNOT NULLで、シュレッディングされたデータに余分なデータが含まれていない場合は、「{}」が挿入されます。JSON列にはDEFAULT値を指定できません。

AUTO COLUMNの詳細については、<Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE TABLE」と「ALTER TABLE」を参照してください。