17.10 - 外部データ アクセスの$PATH式 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-171K-JPN
Language
日本語 (日本)

$PATH式を使用して、CREATE FOREIGN TABLE文のLOCATIONパラメータとPATHPATTERNパラメータで指定した外部データにアクセスできます。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

PATHPATTERN変数は、外部テーブル定義内のLOCATIONのキー接頭部でのレベルに対応します。

パス パターン、キー フィルタ、および$PATH式

例えば、PATHPATTERNは次のように指定されます。

$var1/$var2

次のテーブルでは、さまざまなキー接頭辞について、SELECTクエリー内の$PATH式の出力を一覧表示します。

キー接頭辞 $PATH.$Var1 $PATH.$Var2 $PATH
mydata mydata ' ' mydata
mydata/logs/sensor mydata ログ mydata/logs/sensor
mydata/ mydata ' ' mydata/
mydata/logs mydata ログ mydata/logs
NULL ' ' ' ' ' '

指定した変数で構成されるPATHPATTERN

外部テーブル定義のPATHPATTERNオプションで、独自の変数を指定できます。

例えば、外部テーブルriverflowのLOCATIONパラメータ定義は次のようになります。

LOCATION ('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA')

以下に、外部リポジトリ内のファイルのサンプル リストを示します。

 Location                                                       
 -------------------------------------------------------------- 
/S3/s3.amazonaws.com/td-usgs-public/JSONDATA/09380000/2018/06/29.json
/S3/s3.amazonaws.com/td-usgs-public/JSONDATA/09380000/2018/06/28.json

コネクタ、バケット、エンドポイント、およびキー接頭辞は次のようになります。

connector バケット endpoint key_prefix
S3 td-usgs s3.amazonaws.com JSONDATA/09423560/2018/07/26.json

riverflowのPATHPATTERNパラメータは以下のように定義されます。

PATHPATTERN  ('$data_format/$location/$year/$month/$day')
このPATHPATTERNは、以下に示すキー接頭辞のレベルに対応します。
  • $PATH.$data_フォーマット ='JSONDATA'
  • $PATH.$location ='09423560'
  • $PATH.$year ='2018'
  • $PATH.$month ='07'
  • $PATH.$day ='26.json'

$PATH変数を使用して場所列から選択するサンプル クエリー

次の例のように、場所列で$PATH式を使用してクエリー結果をフィルタ処理できます。

PATHPATTERNで変数を指定する外部テーブルを作成します。

CREATE FOREIGN TABLE riverflow (
  Location VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC,  
  Payload JSON(8388096) INLINE LENGTH 32000 CHARACTER SET UNICODE
) 
USING 
(   
  LOCATION ('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/')
  PATHPATTERN ('$data_format/$location/$year/$month/$day')
)   
NO PRIMARY INDEX;

クエリを実行します。

SELECT DISTINCT location FROM riverflow
WHERE $PATH.$month ='06';

結果は次のようになります。

 Location                                                       
 -------------------------------------------------------------- 
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09400815/2018/06/27.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09424900/2018/06/29.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09429070/2018/06/29.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09380000/2018/06/28.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09400568/2018/06/30.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09424900/2018/06/28.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09429070/2018/06/28.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09396100/2018/06/29.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09429070/2018/06/30.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09513780/2018/06/30.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09513780/2018/06/27.json
 /S3/td-usgs.s3.amazonaws.com/JSONDATA/09424900/2018/06/30.json

$PATH変数を使用してペイロード列から選択するサンプル クエリー

次の例のように、ペイロード列で$PATH式を使用してクエリー結果をフィルタ処理できます。

SELECT payload.Flow, payload.Precipitation, payload.Conductance,   
  payload.datetime, payload.site_no, payload.Temp, payload.GageHeight FROM riverflow
WHERE $PATH.$day ='27.json';

結果は次のようになります。

 Payload.Flow Payload.Precipitation Payload.Conductance Payload.datetime Payload.site_no Payload.Temp Payload.GageHeight 
 ------------ --------------------- ------------------- ---------------- --------------- ------------ ------------------ 
 0.00         0.00                  NULL                2018-06-27 00:00 09400815        NULL         -0.01             
 16200        0.00                  669                 2018-06-27 00:00 09380000        11.0         9.97              
 0.00         0.00                  NULL                2018-06-27 00:00 09396100        NULL         0.49              
 0.00         0.00                  NULL                2018-06-27 00:00 09513780        NULL         -1.44             
                                    NULL                2018-06-27 00:07 09400815        NULL                           
 16000        0.00                  668                 2018-06-27 00:15 09380000        10.9         9.93              
 0.00         0.00                  NULL                2018-06-27 00:15 09396100        NULL         0.49              
 0.00         0.00                  NULL                2018-06-27 00:15 09513780        NULL         -1.44             
 0.00         0.00                  NULL                2018-06-27 00:15 09400815        NULL         -0.01             
 15700        0.00                  668                 2018-06-27 00:30 09380000        10.9         9.88              
 0.00         0.00                  NULL                2018-06-27 00:30 09396100        NULL         0.48              
 0.00         0.00                  NULL                2018-06-27 00:30 09513780        NULL         -1.44             
 0.00         0.00                  NULL                2018-06-27 00:30 09400815        NULL         -0.01             
 15400        0.00                  672                 2018-06-27 00:45 09380000        10.8         9.82              
 0.00         0.00                  NULL                2018-06-27 00:45 09396100        NULL         0.49              
 0.00         0.00                  NULL                2018-06-27 00:45 09513780        NULL         -1.44