これはDATASETデータ型に対してドット表記を使用する方法の簡単な概要です。ここではDATASETに関連するドット表記について説明します。ドット表記の詳細については、<Teradata JSON>を参照してください。
ドット表記はJSONPath構文の以下のメンバーをサポートしています。
- 再帰下降演算子(..)
- ワイルドカード(*) ― 名前付きアイテムとインデックス アイテムの両方を参照
- 名前/インデックス リスト([a,b,c]または[0,3,5])
- 名前/インデックス スライス([c]または[5])
これらの項目はJSONデータ型とDATASETデータ型の両方で使用されます。以下の例とルールでは、SELECTリストとWHERE句でこれらの新しい構文を使用しています。JSONPath構文には、JSONPath式やJSONPathフィルタなど、DATASET型によってサポートされていない部分がある点に注意してください。
DATASETデータ型に対するドット表記式の戻り値はデフォルトでVARCHARです。参照されているDATASET型が列レベルでスキーマが定義されているテーブルの列である場合、予想されるデータ型はスキーマから推測され、可能であれば式の戻り型として使用されます。それが可能でないシナリオもあります。例えば、ドット表記式が複数の異なるデータ型を持つ1つのレコードの複数の子を取り出す場合がそのシナリオに相当します。
SELECT column.record[childA, childB, childC];
次のテーブルは、このマニュアル全体のAVRO格納形式の例で参照されます。
CREATE TABLE myAVROTable09( id INTEGER, avroFile DATASET STORAGE FORMAT Avro); avroFiles09.txt avro09.data|1 avro09.data 7B2274797065223A227265636F7264222C226E616D65223A227265635F30222C226669656C6473223A5B7B226E616D65223A2253616C65222C2274797065223A7B2274797065223A227265636F7264222C226E616D65223A227265635F31222C226669656C6473223A5B7B226E616D65223A224974656D5F4944222C2274797065223A22696E74227D2C7B226E616D65223A224974656D5F4E616D65222C2274797065223A22737472696E67227D2C7B226E616D65223A224974656D5F436F6C6F72222C2274797065223A22737472696E67227D2C7B226E616D65223A224974656D5F5374796C65222C2274797065223A22737472696E67227D2C7B226E616D65223A225175616E746974795F507572636861736564222C2274797065223A22696E74227D2C7B226E616D65223A224974656D5F5072696365222C2274797065223A22646F75626C65227D2C7B226E616D65223A22546F74616C5F5072696365222C2274797065223A22646F75626C65227D5D7D7D5D7D006E0E62696379636C650672656408626F79730200000000000059400000000000005940 .import vartext file avroFiles09.txt USING (c1 BLOB as deferred by name, c2 INTEGER) INSERT INTO myAVROTable09(:c2,:c1);
CSV格納形式を使用している場合は、例の中で、AVROをCSVに置き換えてください。
CREATE TABLE myCSVTable09( id INTEGER, csvFile DATASET STORAGE FORMAT CSV); csvFiles09.txt csv09.data|1 csv09.data ItemNum,ItemName,Quantity,Price 10,Basketball,15,24.99 20,Shovel,9,7.99 30,Paint Brush,10,3.99 .import vartext file csvFiles09.txt USING (c1 CLOB as deferred by name, c2 INTEGER) INSERT INTO myCSVTable09(:c2,:c1);