17.10 - 外部データとデータベース テーブルの結合 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1214-171K-JPN
Language
日本語 (日本)

次の例では、データベース テーブルを作成してデータを入れて、外部テーブルを作成し、2つのテーブルを結合します。

    前提条件

  1. NOS関連コマンドを実行するには、必要な権限を持つユーザーとしてデータベースにログオンします。
  2. rivernamesテーブルがすでに存在する場合は、前提条件セクションの残りの手順をスキップします。
  3. データベース テーブルを作成します。
    オブジェクト ストアからデータベースへの結合のデータベース側を表わすローカル データベース テーブルがない場合は、シミュレーションが必要です。通常は、環境内にすでに存在する既存のテーブルに結合することで、これらのシミュレーション手順は必要なくなります。
    ソリューションとして、次の目的のために外部オブジェクト ストアに小さなディメンション テーブルが配置されています。
    • 結合を実用できるようにする
    • この例を試すすべてのユーザーが同じバージョンのテーブル データを持っていることを確認する
    CREATE SET TABLE rivernames(
    site_no CHAR(8) CHARACTER SET LATIN NOT CASESPECIFIC,
    name CHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC)
    UNIQUE PRIMARY INDEX ( site_no ) ;
  4. ディメンション テーブルへのデータの入力に使用する外部テーブルを作成するか、データベース管理者に作成を依頼します。
    CREATE FOREIGN TABLE nos_rivernames
    , EXTERNAL SECURITY authorization_object
    USING ( LOCATION('/s3/td-usgs-public.s3.amazonaws.com/RIVERS/rivers.csv') );

    LOCATIONをRIVERS/rivers.csvへのパスに置き換えます。

  5. ディメンション テーブルにデータを挿入します。
    INSERT INTO rivernames
    SELECT CAST(site_no AS CHAR(8)), name
    FROM nos_rivernames;
  6. ディメンション テーブルと外部データの結合

  7. まだ実行されていない場合は、riverflow_parquetという名前の外部テーブルを作成するか、データベース管理者に作成を依頼します。Parquetの例を実行するための設定を参照してください。
  8. ディメンション テーブルと外部テーブルを結合します。
    SELECT DISTINCT name(CHAR(100))
    FROM riverflow_parquet rf, rivernames rn
    WHERE rf.site_no = rn.site_no
    AND rf.Precipitation > 0.1
    ORDER BY 1;

    結果:

    name
    ---------------------------------
    GILA RIVER AT KELVIN
    LITTLE COLORADO RIVER AT WOODRUFF
    NEW RIVER NEAR ROCK SPRINGS
    POLACCA WASH NEAR SECOND MESA
    PUERCO RIVER NEAR CHAMBERS
    SALT RIVER NEAR CHRYSOTILE