例: TD_JSONSHRED入れ子オブジェクトおよびドット表記法 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年9月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/gzn1554761068186.ditamap
dita:ditavalPath
ja-JP/gzn1554761068186.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

この例では、入れ子オブジェクトを含む小さなJSONドキュメントを作成し、それをCLOBデータ型としてデータベース テーブルに挿入し、さらにTD_JSONSHREDおよび簡素化されたドット表記法を使用することで入れ子オブジェクトと入れ子を解かれたオブジェクトからデータを抽出します。JSONドキュメントはCLOBオブジェクトとして作成されますが、抽出されたデータはVARCHARデータとして返されます。

CREATE TABLE jsonTableClob (id INTEGER, j CLOB);

INSERT jsonTableClob (1, 
'{ "items" : [ { "a" : 1,
                 "b" : [ 1, "a", 2 ],
                 "c" : { "c-d" : [],
                         "c-e" : {},
                         "c-f" : 123
                       }
               },        
               { "a" : 2,
                 "b" : [ 2, "b", 232 ],
                 "c" : { "c-d" : [0, 1],
                         "c-e" : {"c-e-y":"z"},
                         "c-f" : 234
                       }
               },
               {}
             ]
}'  );
SELECT * FROM TD_JSONSHRED(
    ON (SELECT id, j FROM jsonTableClob)
    USING
        ROWEXPR('items')
                COLEXPR('a','b','c','c.c-d','c.c-e','c.c-e.c-e-y','c.c-f')
        RETURNTYPES('VARCHAR(5)','VARCHAR(15)','VARCHAR(45)','VARCHAR(10)',
                    'VARCHAR(15)','VARCHAR(5)','VARCHAR(5)')
) dt;

以下の返された結果セットでは、列cとして抽出および表示されるデータに、JSONオブジェクト"items" : "c"内で入れ子になっているすべてのオブジェクトが含まれていることに注意してください。これらの入れ子オブジェクトは、さらに分割され、COLEXPRのドット表記法(c.c-d、c.c-e、c.c-e-y、c.c-f)を使用してc-d、c-e、c-e-y、c-f各列に個別に表示され、入れ子のオブジェクトを特定しています。このドキュメント内の最後のJSONオブジェクトは空なので、派生テーブルの最後の行にはJSONデータ列の値が含まれていません。

元のJSONドキュメントはCLOBとして格納されていましたが、データはVARCHAR列に細分化されます。

         id  a      b                c                                              c-d         c-e              c-e-y  c-f
-----------  -----  ---------------  ---------------------------------------------  ----------  ---------------  -----  -----
          1  1      [1,"a",2]        {"c-d":[],"c-e":{},"c-f":123}                  []          {}               ?      123
          1  2      [2,"b",232]      {"c-d":[0,1],"c-e":{"c-e-y":"z"},"c-f":234}    [0,1]       {"c-e-y":"z"}    z      234
          1  ?      ?                ?                                              ?           ?                ?      ?