17.10 - ドット表記を使用したDATASETデータへのアクセス - 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
日本語 (日本)
これは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);