通常、パス フィルタでは外部ストレージからアクセスするデータが少なくなるため、クエリーの効率が向上します。
例と結果は、河川流量のサンプル データ セットを示しています。独自のデータを使用するには、テーブル名、列名、および許可オブジェクトを置き換えます。
- NOS関連コマンドを実行するには、必要な権限を持つユーザーとしてデータベースにログオンします。
- カスタムのPATHPATTERNを使用して外部テーブルを作成します。AUTHORIZATIONオブジェクトによる外部テーブル アクセスの制御で作成された許可オブジェクトを使用します。
CREATE FOREIGN TABLE riverflow_json_path , EXTERNAL SECURITY authorization_object USING ( LOCATION ('YOUR-OBJECT-STORE-URI') PATHPATTERN('$data/$siteno/$year/$month/$day') );
サンプルの河川流量データ セットの信頼証明と場所の値については、例の変数置換を参照してください。
- ペイロード フィルタのみを使用してクエリーを実行します。
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
- 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は、実行するたびに同じ結果を返さないことに注意してください。