外部テーブルのペイロード列でのフィルタリング - 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
通常、パス フィルタでは外部ストレージからアクセスするデータが少なくなるため、クエリーの効率が向上します。

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

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

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

  3. ペイロード フィルタのみを使用してクエリーを実行します。
    SELECT TOP 2 payload.GageHeight,payload.Flow
    FROM riverflow_json_path
    WHERE payload.site_no = '09394500';

    結果:

    TheGageHeight    TheFlow
    -------------  ---------
             6.39      45.60
             5.04       3.53
  4. site_no属性もパスの一部として表示されるため、ペイロード フィルタリングの代わりにパス フィルタリングを使用することが、このクエリーの記述にはより適しています。
    SELECT TOP 2 payload.GageHeight,payload.Flow
    FROM riverflow_json_path
    WHERE $path.$siteno = '09394500';

    パス フィルタリングを使用する方がより効率的です。パス フィルタリングでは、読み込まれる外部オブジェクトの数が少なくなります。有効な場合はクエリー ログを表示できます。ここから、2番目のクエリーではアクセスされる外部オブジェクトの数が少なく、転送されるデータが少ないことを確認できます。

    NOS関連のDBQLフィールドの詳細については、オレンジ ブック、<Native Object Store: Teradata Vantage™ Advanced SQL Engine, TDN0009800>、および<Teradata Vantage™ - データ ディクショナリ、B035-1092>を参照してください。

    結果:

    TheGageHeight    TheFlow
    -------------  ---------
             6.40      62.90
             6.39       40.1

    TOPは、実行するたびに同じ結果を返さないことに注意してください。