例: JSONデータを含む外部テーブルでのキーの表示 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage
この例では、JSON_KEYS関数を使用して、JSONデータを含む外部テーブルでキーを表示する方法を示します。
外部テーブルの場合、クエリーの構文は、拡張子の有無にかかわらず変わりません。これは、外部テーブルの中継点を使用せずにREAD_NOSを使用して情報を直接抽出するのとは対照的です。

テーブル定義

この例のテーブル定義は、次のとおりです。この文は、LOCATIONパラメータが、Amazon S3に保存されているファイルを指定する外部テーブルriverflowを定義します。

DefAuth許可オブジェクトをまだ作成していない場合は作成します。例: 許可オブジェクトの作成を参照してください。

CREATE FOREIGN TABLE riverflow
, EXTERNAL SECURITY DEFINER TRUSTED DefAuth
USING
(
     LOCATION ('/s3/td-usgs.s3.amazonaws.com/DATA/09380000/2018/06/27')
);

JSONデータでのキーの表示

このSELECT文は、JSON_KEYS関数を使用して、JSONデータを含んでいる外部テーブルriverflowでキーを表示します。

SELECT DISTINCT * FROM JSON_KEYS (ON (SELECT payload FROM riverflow)) AS j;

結果表示は、次のとおりです。

JSONKeys
"BatteryVoltage"
"Flow"
"Precipitation"
"Conductance"
"Velocity"
"datetime"
"WaterVelocity"
"GageHeight2"
"site_no"
"Temp"
"GageHeight"

サンプルのクエリーと結果

このクエリーは、温度が11を超え10.00を超えるエントリを、日付と時刻の順に検索します。

SELECT payload.Flow, payload.Precipitation, payload.Conductance, payload.datetime, payload.site_no, payload.Temp, payload.GageHeight
FROM riverflow 
AS derived_table WHERE payload.Temp>11.0 AND payload.GageHeight>10.00 ORDER BY payload.datetime;

出力のサンプルを次に示します。

 Payload.Flow Payload.Precipitation Payload.Conductance Payload.datetime Payload.site_no Payload.Temp Payload.GageHeight 
 ------------ --------------------- ------------------- ---------------- --------------- ------------ ------------------ 
 16400        0.00                  668                 2018-06-27 14:15 09380000        11.8         10.01             
 16400        0.00                  670                 2018-06-27 14:30 09380000        11.8         10.01             
 16600        0.00                  665                 2018-06-27 14:45 09380000        11.9         10.04             
 16600        0.00                  669                 2018-06-27 15:00 09380000        11.9         10.05             
 16700        0.00                  668                 2018-06-27 15:15 09380000        12.0         10.07             
 16700        0.00                  667                 2018-06-27 15:30 09380000        12.0         10.07             
 16700        0.00                  663                 2018-06-27 15:45 09380000        12.0         10.07             
 16800        0.00                  666                 2018-06-27 16:00 09380000        12.0         10.09             
 16800        0.00                  667                 2018-06-27 16:15 09380000        12.0         10.08             
 16800        0.00                  667                 2018-06-27 16:30 09380000        12.0         10.08             
 16800        0.00                  668                 2018-06-27 16:45 09380000        12.0         10.09             
 16900        0.00                  670                 2018-06-27 17:00 09380000        12.0         10.10