この例では、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