WRITE_NOSを使用して、既存のデータベース テーブルからデータをオフロードできます。
または、次の例に示すように、WRITE_NOSを使用して探索するためのテスト テーブルを作成できます。次の例では、Teradataが提供するパブリック外部オブジェクト ストアからテスト テーブルにデータを読み込む方法も示します。
- 読み取り元の外部ストレージにアクセスするため、READ_NOSの許可オブジェクトを作成します(まだ実行されていない場合)。例えば、IDやキーを必要としないパブリック オブジェクト ストアに対して許可オブジェクトを作成すると、USERとPASSWORDは空の文字列になります。
CREATE AUTHORIZATION MyAuthObj USER '' PASSWORD '';
- 外部テーブルを作成するか、外部テーブルの作成をデータベース管理者に依頼します。外部テーブルは、外部ストレージ内のデータにアクセスするために使用されます。
CREATE FOREIGN TABLE RiverFlow ,EXTERNAL SECURITY MyAuthObj 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 INTEGER) SiteNo, CAST(payload.datetime AS VARCHAR(20)) DateTime, CAST(payload.Flow AS DECIMAL(3,2)) Flow, CAST(payload.GageHeight AS DECIMAL(3,2)) GageHeight1, CAST(payload.Precipitation AS DECIMAL(3,2)) Precipitation, CAST(payload.GageHeight2 AS DECIMAL(3,2)) GageHeight2 FROM ( LOCATION='/s3/td-usgs-public.s3.amazonaws.com/JSONDATA/' AUTHORIZATION=MyAuthObj ) 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データの一部の書き込みを参照してください。