次の例では、データベース テーブルを作成してデータを入れて、外部テーブルを作成し、2つのテーブルを結合します。
例では、サンプルの河川流量データ セットを使用します。独自のデータを使用するには、テーブル名、列名、および許可オブジェクトを置き換えます。サンプル データ セットの信頼証明および格納場所の値については、例の変数置換を参照してください。
- NOS関連コマンドを実行するには、必要な権限を持つユーザーとしてデータベースにログオンします。
- rivernamesテーブルがすでに存在する場合は、前提条件セクションの残りの手順をスキップします。
- データベース テーブルを作成します。オブジェクト ストアからデータベースへの結合のデータベース側を表わすローカル データベース テーブルがない場合は、シミュレーションが必要です。通常は、環境内にすでに存在する既存のテーブルに結合することで、これらのシミュレーション手順は必要なくなります。ソリューションとして、次の目的のために外部オブジェクト ストアに小さなディメンション テーブルが配置されています。
- 結合を実用できるようにする
- この例を試すすべてのユーザーが同じバージョンのテーブル データを持っていることを確認する
CREATE SET TABLE rivernames ( site_no INT, name CHAR(90) CHARACTER SET LATIN NOT CASESPECIFIC ) UNIQUE PRIMARY INDEX ( site_no );
- ディメンション テーブルへのデータの入力に使用する外部テーブルを作成するか、データベース管理者に作成を依頼します。
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へのパスに置き換えます。
- ディメンション テーブルにデータを入力します。
INSERT INTO rivernames SELECT site_no, name FROM nos_rivernames;
- 存在しない場合は、riverflow_csvという名前の外部テーブルを作成するか、データベース管理者に作成を依頼します。CSVの例を実行するための設定を参照してください。
- ディメンション テーブルと外部テーブルを結合します。
SELECT DISTINCT name(CHAR(100)) FROM riverflow_csv rf, rivernames rn WHERE rf.site_no = rn.site_no AND rf.Precipitation > 0.1 ORDER BY 1;
結果は次のようになります。
name ---------------------------------- CIBECUE CREEK NEAR OVERGAARD CRIR LWR MAIN DRAIN BLW TYSON WW GILA RIVER AT KELVIN LITTLE COLORADO RIVER AT WOODRUFF NEW RIVER NEAR ROCK SPRINGS NEWMAN CANYON ABOVE UPPER LAKE MARY POLACCA WASH NEAR SECOND MESA
前提条件
ディメンション テーブルと外部データの結合