次の例では、データベース テーブルを作成してデータを入れて、外部テーブルを作成し、2つのテーブルを結合します。
- NOS関連コマンドを実行するには、必要な権限を持つユーザーとしてデータベースにログオンします。
- rivernamesテーブルがすでに存在する場合は、前提条件セクションの残りの手順をスキップします。
- データベース テーブルを作成します。オブジェクト ストアからデータベースへの結合のデータベース側を表わすローカル データベース テーブルがない場合は、シミュレーションが必要です。通常は、環境内にすでに存在する既存のテーブルに結合することで、これらのシミュレーション手順は必要なくなります。ソリューションとして、次の目的のために外部オブジェクト ストアに小さなディメンション テーブルが配置されています。
- 結合を実用できるようにする
- この例を試すすべてのユーザーが同じバージョンのテーブル データを持っていることを確認する
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 ) ;
- ディメンション テーブルへのデータの入力に使用する外部テーブルを作成するか、データベース管理者に作成を依頼します。
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 CAST(site_no AS CHAR(8)), name FROM nos_rivernames;
- まだ実行されていない場合は、riverflow_parquetという名前の外部テーブルを作成するか、データベース管理者に作成を依頼します。Parquetの例を実行するための設定を参照してください。
- ディメンション テーブルと外部テーブルを結合します。
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
前提条件
ディメンション テーブルと外部データの結合