例: リレーショナル データベースへの外部テーブル内の外部データの結合 - 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

この例では、外部テーブルriverflow_joinの外部データをデータベース テーブルrivernamesに結合し、川の位置が指定した高さに達するタイミングを判別します。

テーブル定義

Amazon S3での外部データを含む外部テーブルriverflow_joinの定義を次に示します。

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

CREATE FOREIGN TABLE riverflow_join
 , EXTERNAL SECURITY INVOKER TRUSTED DefAuth
     (
      Location VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC,
      Payload JSON(8388096) INLINE LENGTH 32000 CHARACTER SET UNICODE)
USING
(
      LOCATION  ('/s3/td-usgs.s3.amazonaws.com/DATA/09380000/2018')
      PATHPATTERN  ('$data/$siteno/$year/$month/$day')
      ROWFORMAT('{"record_delimiter":"\n", "character_set":"UTF8"}')
 )
NO PRIMARY INDEX ;

テーブルrivernamesには、サイト番号とそれに対応する場所名の列が含まれています。

CREATE SET TABLE rivernames
     (
      site_no CHAR(8) CHARACTER SET LATIN NOT CASESPECIFIC,
      name CHAR(60) CHARACTER SET LATIN NOT CASESPECIFIC)
UNIQUE PRIMARY INDEX ( site_no );

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

この文は、川の高さが10.11に達した場所の名前を返します。riverflow_joinテーブルの別名はrfで、rivernamesテーブルの別名はrnです。

SELECT name,rf.payload.GageHeight
FROM riverflow_join rf, rivernames rn
WHERE rf.payload.site_no = rn.site_no
AND rf.payload.GageHeight = 10.11;

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

name                                   Payload.GageHeight
----------------------------------------------- ------------------
COLORADO RIVER AT LEES FERRY, AZ                 10.11
COLORADO RIVER AT LEES FERRY, AZ                 10.11
COLORADO RIVER AT LEES FERRY, AZ                 10.11
COLORADO RIVER AT LEES FERRY, AZ                 10.11
COLORADO RIVER AT LEES FERRY, AZ                 10.11