パス フィルタリングを使用した外部テーブルの問合わせ - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/zws1595641486108.ditamap
dita:ditavalPath
ja-JP/zws1595641486108.ditaval
dita:id
B035-1214
Product Category
Software
Teradata Vantage

すべての外部テーブルには、PATHPATTERN('$Var1/$Var2/$Var3/$Var4/$Var5/$Var6/$Var7/$Var8/$Var9/$Var10/$Var11')などの汎用のPATHPATTERNがあります。

クエリーでパス フィルタリングを簡単に設定するには、外部テーブルを作成するときに、意味のある名前を付けてPATHPATTERNを明示的に指定します。例えば、河川流量の例で選択したパス名と一致させるには、('$data/$siteno/$year/$month/$day')を使用します。PATHPATTERNは、外部オブジェクト ストア内のすべてのオブジェクトを戻す代わりに、結果を制限するのに役立ちます。

例では、サンプルの河川流量データ セットを使用します。独自のデータを使用するには、テーブル名、列名、および許可オブジェクトを置き換えます。サンプル データ セットの信頼証明および格納場所の値については、例の変数置換を参照してください。

  1. NOS関連コマンドを実行するには、必要な権限を持つユーザーとしてデータベースにログオンします。
  2. 存在しない場合は、riverflow_parquet_pathという名前の外部テーブルを作成するか、データベース管理者に作成を依頼します。外部テーブルからの外部Parquetデータのフィルタリングを参照してください。
  3. パス フィルタリングを使用して検索結果を絞り込みます。特定の日付のサイト番号のデータを表示するには、パス属性を問合わせます。
    SELECT TOP 2 *
    FROM riverflow_parquet_path
    WHERE $PATH.$year = '2018'
      AND $PATH.$month = '07'
      AND $PATH.$day = '01.parquet'
      AND $PATH.$siteno = '09394500';

    $PATH.$day変数は、パス セグメント名( data / siteno / year / month / day)内の実際のオブジェクトを表します。そのため、例に示すように、名前の一部としてファイル拡張子を持つことがよくあります。

    結果は、外部オブジェクト ストアの場所を反映して、次のようになります。

         Location /S3/td-usgs.s3.amazonaws.com/PARQUETDATA/09394500/2018/07/01.parquet
      GageHeight2     4.81
             Flow      0.00
          site_no              9394500
         datetime 2018-07-01 00:15
    Precipitation     0.00
       GageHeight     4.75
         Location /S3/td-usgs.s3.amazonaws.com/PARQUETDATA/09394500/2018/07/01.parquet
      GageHeight2     4.82
             Flow      0.01
          site_no              9394500
         datetime 2018-07-01 00:00
    Precipitation     0.00
       GageHeight     4.75
    読みやすくするために、出力は縦に表示しています。

    パス フィルタリングでより具体的に指定することで、結果を絞り込め、処理時間と外部ストレージの アクセスにかかるコストを節約できることがあります。

  4. パス フィルタリングを使用してsitenoでフィルタ処理します。
    SELECT TOP 2 GageHeight TheGageHeight
    , Flow TheFlow
    FROM riverflow_parquet_path
    WHERE $path.$siteno = '09394500';

    結果:

    TheGageHeight    TheFlow
    -------------  ---------
             4.75       0.01
             5.04       3.53