次の例では、データベース テーブルに格納されているすべてのデータを外部オブジェクト ストレージに書き込みます。データは書き込まれる前にAdvanced SQL Engineでパーティション化(ソート)されます。外部ストレージ内のデータを格納しているオブジェクトには、格納されているソート済みデータを反映する名前が付けられます。
- まだ実行されていない場合は、外部オブジェクト ストアにアクセスするための権限を設定します。WRITE_NOSの例に対する許可の設定を参照してください。
- まだ実行されていない場合は、データを抽出するデータベース テーブルを設定します。既存のテーブルのいずれかを使用するか、テスト テーブルを設定して例で使用できます。テスト テーブルの設定を参照してください。
- まだ完了していない場合は、データを書き込む外部オブジェクト ストアへのアクセスを設定または取得します。外部ストレージ ベンダーの指示に従います。
- データベース テーブルのすべての行を外部オブジェクト ストアに書き込みます。
SELECT NodeId, AmpId, Sequence, ObjectName, ObjectSize, RecordCount FROM WRITE_NOS_FM ( ON ( SELECT * FROM RiverFlowPerm ) PARTITION BY SiteNo ORDER BY SiteNo USING LOCATION('YOUR-STORAGE-ACCOUNT/RiverFlowPerm/') STOREDAS('PARQUET') COMPRESSION('GZIP') NAMING('RANGE') INCLUDE_ORDERING('TRUE') MAXOBJECTSIZE('4MB') ) AS d ORDER BY AmpId;
LOCATIONを、データを書き込む外部オブジェクト ストアのURIに置き換えます。
この例で注意すべき点:- 結果セットの各行は、Advanced SQL Engineのデータを格納する外部ストレージに書き込まれた1つのオブジェクトを記述します。
- 各オブジェクトには、PARTITION BY句に従って作成された1つのパーティションのデータが含まれています。この場合、データ収集サイトごとに1つのパーティション、つまりSiteNo列値ごとにパーティションが1つあります。
- NAMING('RANGE')により、オブジェクト名に、範囲内の上限値と下限値が含められます。この場合、オブジェクト名にはSiteNoの値が含まれます。例えば、オブジェクト名の/S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm/09497500/09497500/object_33_0_1.parquetでは、"09497500"がこのオブジェクトに含まれるデータのSiteNoです。このオブジェクトには、サイト09497500と09497500の間(両端含む)の複数のサイト番号からのデータが含まれます。
- クエリーにはINCLUDE_ORDERING('TRUE')が含まれるため、オブジェクトにはORDER BY列のデータが含まれます。この場合、オブジェクト データにはその行のデータが収集されたサイト番号が含まれます。
結果は次のようになります。
NodeId 33 AmpId 0 Sequence 1 ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm/09497500/09497500/object_33_0_1.parquet ObjectSize 27682 RecordCount 2944 NodeId 33 AmpId 0 Sequence 1 ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm/09513780/09513780/object_33_0_1.parquet ObjectSize 19136 RecordCount 2941 [...]
読みやすくするために、出力は縦に表示しています。
- 外部オブジェクト ストレージ上のオフロードされたデータを検証します。
- 外部オブジェクト ストアにアクセスするための外部テーブルを作成します。
CREATE FOREIGN TABLE ftRiverFlowPerm, EXTERNAL SECURITY DEFINER TRUSTED DefAuth_Write ( Location VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC, SiteNo VARCHAR(8) CHARACTER SET UNICODE, DateTime TIMESTAMP(0) FORMAT 'YYYY-MM-DDBHH:MI', Flow FLOAT, GageHeight1 FLOAT, Precipitation FLOAT, Temperature FLOAT, Velocity FLOAT, BatteryVoltage FLOAT, GageHeight2 FLOAT, WaterVelocity FLOAT, Conductance FLOAT ) USING ( LOCATION('YOUR-STORAGE-ACCOUNT/RiverFlowPerm/') STOREDAS('PARQUET') ) PARTITION BY COLUMN;
LOCATIONを、データを書き込んだ外部オブジェクト ストアのURIに置き換えます。
- 外部データの行数をカウントします。
SELECT COUNT(*) FROM ftRiverFlowPerm;
結果:Count(*) -------- 36301
- ftRiverFlowPermという外部テーブルを使用して、外部データから1行をサンプリングします。
SELECT * FROM ftRiverFlowPerm SAMPLE 1;
結果:Location /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm/09429070/09429070/object_33_1_1.parquet SiteNo 09429070 DateTime 2018-07-16 22:00 Flow 1.55000000000000E 002 GageHeight1 4.38000000000000E 000 Precipitation ? Temperature 8.33000000000000E 001 Velocity 1.15000000000000E 000 BatteryVoltage ? GageHeight2 ? WaterVelocity ? Conductance ?
読みやすくするために、出力は縦に表示しています。
- 外部オブジェクト ストアにアクセスするための外部テーブルを作成します。
- データベース テーブルのすべての行を外部オブジェクト ストアに書き込みます。
SELECT NodeId, AmpId, Sequence, ObjectName, ObjectSize, RecordCount FROM WRITE_NOS_FM ( ON ( SELECT * FROM RiverFlowPerm ) PARTITION BY SiteNo ORDER BY SiteNo USING LOCATION('YOUR-STORAGE-ACCOUNT/RiverFlowPerm_Discrete/') STOREDAS('PARQUET') COMPRESSION('GZIP') NAMING('DISCRETE') INCLUDE_ORDERING('TRUE') MAXOBJECTSIZE('4MB') ) AS d ORDER BY AmpId;
LOCATIONを、データを書き込む外部オブジェクト ストアのURIに置き換えます。
この例で注意すべき点:- 結果セットの各行は、Vantageのデータを格納する外部ストレージに書き込まれた1つのオブジェクトを記述します。
- 各オブジェクトには、PARTITION BY句に従って作成された1つのパーティションのデータが含まれています。この場合、データ収集サイトごとに1つのパーティション、つまりSiteNo列値ごとにパーティションが1つあります。
- NAMING('DISCRETE')によって、オブジェクト名にパーティション名が含められますが、この場合、オブジェクト名にはSiteNoの値が含まれます。オブジェクト名/S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_Discrete/09497500/object_33_0_1.parquetでは、"09497500"がこのオブジェクトに含まれるデータのSiteNoです。
- クエリーにはINCLUDE_ORDERING('TRUE')が含まれるため、オブジェクトにはORDER BY列のデータが含まれます。この場合、オブジェクト データにはその行のデータが収集されたサイト番号が含まれます。
結果は次のようになります。
NodeId 33 AmpId 0 Sequence 1 ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_Discrete/09497500/object_33_0_1.parquet ObjectSize 27682 RecordCount 2944 NodeId 33 AmpId 0 Sequence 1 ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_Discrete/09513780/object_33_0_1.parquet ObjectSize 19136 RecordCount 2941 NodeId 33 AmpId 0 Sequence 1 ObjectName /S3/s3.amazonaws.com/ie-writenos-bucket/RiverFlowPerm_Discrete/09424900/object_33_0_1.parquet ObjectSize 23174 RecordCount 2946 [...]
読みやすくするために、出力は縦に表示しています。
前提条件
例: 外部オブジェクト ストアへの全行の書き込み、PARTITION BYおよびNAMING('RANGE')の使用
例: 外部オブジェクト ストアへの全行の書き込み、PARTITION BYおよびNAMING('DISCRETE')の使用