WRITE_NOSを使用して、既存のデータベース テーブルからデータをオフロードできます。
または、次の例に示すように、WRITE_NOSを使用して探索するためのテスト テーブルを作成できます。次の例では、Teradataが提供するパブリック外部オブジェクト ストアからテスト テーブルにデータを読み込む方法も示します。
- 読み取り元の外部ストレージにアクセスするため、READ_NOSの許可オブジェクトを作成します(まだ実行されていない場合)。例えば、IDやキーを必要としないパブリック オブジェクト ストアに対して許可オブジェクトを作成すると、USERとPASSWORDは空の文字列になります。
CREATE AUTHORIZATION DefAuth AS DEFINER TRUSTED USER '' PASSWORD '';
- 許可オブジェクトを含めるために、READ_NOSの関数マッピングを作成します。
CREATE FUNCTION MAPPING READ_NOS_Optional FOR READ_NOS EXTERNAL SECURITY DEFINER TRUSTED DefAuth USING BUFFERSIZE, SAMPLE_PERC, ROWFORMAT, RETURNTYPE, HEADER, MANIFEST, LOCATION, STOREDAS, FULLSCAN, ANY IN TABLE;
- 外部テーブルを作成するか、外部テーブルの作成をデータベース管理者に依頼します。外部テーブルは、外部ストレージ内のデータにアクセスするために使用されます。
CREATE FOREIGN TABLE RiverFlow, EXTERNAL SECURITY DEFINER TRUSTED DefAuth ( Location varchar(2048) CHARACTER SET UNICODE CASESPECIFIC, Payload JSON(8388096) INLINE LENGTH 32000 CHARACTER SET UNICODE ) USING ( LOCATION('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/') );
LOCATIONには、USGSの河川流量データを格納している外部オブジェクト ストアのURIが含まれています。例に示す場所は、TeradataのパブリックS3バケットです。
- テーブル内の行をカウントして、データにアクセスできることを検証します。
SELECT COUNT(*) FROM RiverFlow;
結果:
Count(*) ----------- 36301
- JSON_KEYS関数を実行して、外部テーブルがアクセスするJSONオブジェクトのペイロードに含まれるすべての属性の名前を表示します。
SELECT DISTINCT * FROM JSON_KEYS (ON (SELECT Payload FROM RiverFlow)) AS j;
結果:
JSONKeys ---------------------- "Velocity" "datetime" "Precipitation" "Flow" "BatteryVoltage" "WaterVelocity" "Conductance" "Temp" "GageHeight2" "GageHeight" "site_no"
- データベースに永久テーブルを作成し、READ_NOSを使用して外部データをロードします。
CREATE TABLE RiverFlowPerm AS ( SELECT CAST(Payload.site_no AS VARCHAR(8) CHARACTER SET UNICODE) SiteNo, CAST(Payload.datetime AS TIMESTAMP(0) FORMAT 'YYYY-MM-DDBHH:MI') DateTime, CAST(Payload.Flow AS FLOAT) Flow, CAST(Payload.GageHeight AS FLOAT) GageHeight1, CAST(Payload.Precipitation AS FLOAT) Precipitation, CAST(Payload.Temp AS FLOAT) Temperature, CAST(Payload.Velocity AS FLOAT) Velocity, CAST(Payload.BatteryVoltage AS FLOAT) BatteryVoltage, CAST(Payload.GageHeight2 AS FLOAT) GageHeight2, CAST(Payload.WaterVelocity AS FLOAT) WaterVelocity, CAST(Payload.Conductance AS FLOAT) Conductance FROM READ_NOS_Optional ( ON (SELECT CAST(NULL AS JSON CHARACTER SET UNICODE)) USING LOCATION('/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/') ) AS D ) WITH DATA;
LOCATIONには、USGSの河川流量データが格納された外部オブジェクト ストアのURIが含まれています。このクエリーは、外部オブジェクト ストアからデータを読み込むためにREAD_NOSを使用して永久テーブルを作成します。
- テーブルがロードされていることを検証します。
SELECT COUNT(*) FROM RiverFlowPerm;
結果: このカウントは、以前のカウントと一致します。
Count(*) ----------- 36301
- (オプション)他のクエリーを実行してデータを調べます。
SELECT SiteNo, COUNT(*) FROM RiverFlowPerm GROUP BY 1 ORDER BY 1;
結果:
SiteNo Count(*) -------- ----------- 09380000 2945 09394500 2947 09396100 3086 09400568 2943 09400815 3679 [...]
SELECT Conductance, COUNT(*) FROM RiverFlowPerm GROUP BY 1 ORDER BY 1;
結果:
Conductance Count(*) ---------------------- ----------- ? 33356 6.50000000000000E 002 1 6.51000000000000E 002 1 6.52000000000000E 002 5 6.53000000000000E 002 6 6.54000000000000E 002 18 [...]
SELECT TOP 5 DateTime, COUNT(*) FROM RiverFlowPerm GROUP BY 1 ORDER BY 1;
結果:
DateTime Count(*) ------------------- ----------- 2018-06-27 00:00:00 12 2018-06-27 00:07:00 1 2018-06-27 00:15:00 12 2018-06-27 00:30:00 12 2018-06-27 00:45:00 12
次のタスクWRITE_NOSの例では、RiverFlowPermというテスト テーブルを使用できます。例: WRITE_NOSとAUTHORIZATIONの使用、外部オブジェクト ストアへのすべてのVantageデータの書き込み、および外部オブジェクト ストアへのVantageデータの一部の書き込みを参照してください。