この例では、Advanced SQL Engineテーブルから外部オブジェクト ストアにデータを書き込む方法を示します。
- まだ実行されていない場合は、許可オブジェクトと関数マッピングを設定します。WRITE_NOSの例に対する許可の設定を参照してください。
- まだ実行されていない場合は、データを抽出するデータベース テーブルを設定します。既存のテーブルのいずれかを使用するか、テスト テーブルを設定して例で使用できます。テスト テーブルの設定を参照してください。
- データを書き込む外部ストレージへのアクセスを設定または取得します。外部ストレージ ベンダーの指示に従います。
- データベース テーブルから外部オブジェクト ストアにデータの一部を書き込みます。例として、テスト テーブルからRiverFlowPermという名前のJSONデータを読み取り、それを外部ストレージに書き込みます。
SELECT * FROM WRITE_NOS ( ON ( SELECT * FROM RiverFlowPerm WHERE DateTime = '2018-06-27 00:00') USING LOCATION('YOUR-OBJECT-STORE-URI/20180627/') AUTHORIZATION(MyAuthObj_Write) STOREDAS('PARQUET') ) AS d;
LOCATIONを、データを書き込む外部オブジェクト ストアのURIに置き換えます。
WRITE_NOSは、データをParquetの形式で格納します。結果は次のようになります。
NodeId AmpId Sequence ObjectName ------ ----- -------- -------- -------------------------------------------------------------- 33 0 1 /S3/s3.amazonaws.com/ie-writenos-bucket/20180701/object_33_0_1.parquet 33 1 1 /S3/s3.amazonaws.com/ie-writenos-bucket/20180701/object_33_1_1.parquet 33 2 1 /S3/s3.amazonaws.com/ie-writenos-bucket/20180701/object_33_2_1.parquet
- 書き込んだ外部オブジェクト ストアにアクセスするための外部テーブルを作成します。
CREATE FOREIGN TABLE ft20180627 ,EXTERNAL SECURITY MyAuthObj_Write USING ( LOCATION('YOUR-OBJECT-STORE-URI/20180627/') );
LOCATIONを、データを書き込んだ外部オブジェクト ストアのURIに置き換えます。
- 外部データの行数をカウントします。
SELECT COUNT(*) FROM ft20180701;
結果:Count(*) -------- 12
- 外部データから1行をサンプリングします。
SELECT * FROM ft20180701 SAMPLE 1;
結果は次のようになります。
Location /S3/s3.amazonaws.com/iewritenostest/20180627/object_33_3_1.parquet SiteNo 9394500 DateTime 2018-06-27 00:00 Flow .01 GageHeight1 4.75 Precipitation .00 GageHeight2 4.83
読みやすいように、出力は縦に表示されます。
- データベース テーブルのデータの一部を外部に格納されているデータと比較します。まず、WHERE句で指定した条件に一致するデータベース テーブルの行数をカウントします。
SELECT COUNT(*) FROM RiverFlowPerm WHERE GageHeight1 > 7.0 AND DateTime = (TIMESTAMP '2018-07-01 00:00:00');
結果:Count(*) -------- 2
次に、同じ基準に一致する外部オブジェクト ストアの行数をカウントします。
SELECT COUNT(*) FROM RiverFlowPerm s, ft20180627 ft WHERE s.SiteNo = ft.SiteNo AND s.GageHeight1 > 7.0 AND s.DateTime = '2018-06-27 00:00';
結果:Count(*) -------- 2
両方のクエリーの結果が一致するはずです。
- 外部オブジェクト ストアからオフロードされたデータのParquetスキーマを読み取ります。
SELECT * FROM ( LOCATION='/S3/s3.amazonaws.com/iewritenostest/20180627/' AUTHORIZATION=MyAuthObj_Write FULLSCAN='TRUE' RETURNTYPE='NOSREAD_PARQUET_SCHEMA' ) as d;
LOCATIONを、データを書き込んだ外部オブジェクト ストアのURIに置き換えます。
結果は次のようになります。
ColPosition 1 Name SiteNo TdatDataType INTEGER PhysicalType INT32 LogicalType NONE Precision 0 Scale 0 MinLength 0 MaxLength 0 NullFound 1 FileType parquet Location /S3/s3.amazonaws.com/iewritenostest/20180627/object_33_0_1.parquet ColPosition 1 Name SiteNo TdatDataType INTEGER PhysicalType INT32 LogicalType NONE Precision 0 Scale 0 MinLength 0 MaxLength 0 NullFound 1 FileType parquet Location /S3/s3.amazonaws.com/iewritenostest/20180627/object_33_1_1.parquet [...] ColPosition 2 Name DateTime TdatDataType VARCHAR PhysicalType BYTE_ARRAY LogicalType UTF8 Precision 0 Scale 0 MinLength 16 MaxLength 16 NullFound 1 FileType parquet Location /S3/s3.amazonaws.com/iewritenostest/20180627/object_33_0_1.parquet [...]
読みやすいように、出力は縦に表示されます。
前提条件
外部オブジェクト ストアへのデータの書き込み
外部オブジェクト ストレージのオフロード データの検証