$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