CREATE FOREIGN TABLE定義でのパス フィルタを使用したフィルタリング - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - Native Object Store 入門ガイド

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/gmv1596851589343.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1214
Product Category
Software
Teradata Vantage

オブジェクト ストア内のオブジェクトの部分集合が将来的に使用するために識別された場合、Teradataでは、外部テーブルの定義のキー構造値に基づいてパス フィルタリング値を使用することを推奨します。外部テーブル定義のLOCATION句では、1つ以上のキー構造レベルで特定の値を指定して、返されるオブジェクトを制限できます。ただし、異なるフィルタが必要になるたびに、追加の外部テーブルを作成するか、前のテーブルを削除して再作成する必要があります。この問題を回避するために、CREATE FOREIGN TABLEの一部としてPATHPATTERN句を使用できます。

次の例では、フィルタリングはLOCATION句で表わされます。site_noに一致する河川サイトのデータ("0938"で始まるデータなど)のみが、この外部テーブル定義を通じて返されます。

例と結果は、河川流量のサンプル データ セットを示しています。独自のデータを使用するには、テーブル名、列名、および許可オブジェクトを置き換えます。

  1. NOS関連コマンドを実行するには、必要な権限を持つユーザーとしてデータベースにログオンします。
  2. site_noでフィルタ処理するLOCATIONを指定する外部テーブルを作成するか、データベース管理者に作成を依頼します。AUTHORIZATIONオブジェクトによる外部テーブル アクセスの制御で作成した許可オブジェクトを使用します。
    CREATE FOREIGN TABLE riverflow_csv_pathfilter
    , EXTERNAL SECURITY authorization_object
    USING (
    LOCATION ('YOUR-OBJECT-STORE-URI/site_no')
    PATHPATTERN('$data/$siteno/$year/$month/$day') );

    ここでsite_noはサイト番号の値です(0938など)。

    サンプルの河川流量データ セットの信頼証明と場所の値については、例の変数置換を参照してください。

  3. テーブル定義を表示します。
    SHOW TABLE riverflow_csv_pathfilter;

    結果: DDLが表示されます。例:

    CREATE MULTISET FOREIGN TABLE NOS_USR.riverflow_csv_pathfilter ,FALLBACK ,
         EXTERNAL SECURITY NOS_USR.MYAUTHOBJ ,
         MAP = TD_MAP1
         (
          Location VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC,
          Temp DECIMAL(3,1),
          Flow SMALLINT,
          site_no INTEGER,
          datetime TIMESTAMP(0) FORMAT 'Y4-MM-DDBHH:MI',
          Conductance SMALLINT,
          Precipitation DECIMAL(3,2),
          GageHeight DECIMAL(4,2))
    USING
    (
          LOCATION  ('/s3/td-usgs-public.s3.amazonaws.com/CSVDATA/0938')
          PATHPATTERN  ('$data/$siteno/$year/$month/$day')
          MANIFEST  ('FALSE')
          ROWFORMAT  ('{"field_delimiter":",","record_delimiter":"\n","character_set":"LATIN"}')
          STOREDAS  ('TEXTFILE')
          HEADER  ('TRUE')
          STRIP_EXTERIOR_SPACES  ('FALSE')
          STRIP_ENCLOSING_CHAR  ('NONE')
    )
    NO PRIMARY INDEX ;