概要
TDV 8.4よりS3をはじめとしたクラウドオブジェクトストレージに正式対応しました。
本機能を用いることにより、TDVでストレージ内のテキストファイル(csv, txt)やParquetファイルの読み込みが可能となります。
検証環境
Server Version: 8.4.0 HF003
Server OS: CentOS 7
Studio OS: Windows 10
接続手順
1.新規アダプタタイプ選択画面で Amazon S3 を選択します。
2.各種パラメータを入力します。基本タブの設定項目は次の通りです。
-
URI
:S3バケットへのURI。-
s3a://<バケット名>/<フォルダ名>
のように記述します。 s3://...
ではありませんのでご注意ください
-
-
Access Key ID
:接続対象のS3バケットに対する権限を持つアクセスキーID -
Secret Access Key
:接続対象のS3バケットに対する権限を持つアクセスキーIDのシークレットアクセスキー -
End Point Region
:バケットの存在するリージョン -
Assumed Role Name
:接続の際に用いるAssume Role名。設定は任意です
3.「詳細タブ」でファイルの読み込み設定を行います。今回はHas Header Row
にチェックを入れます。
※ このとき、Infer Schema
にチェックを入れておくとファイル中の値から各カラムの型が自動推定されます。
4.「作成とイントロスペクト」を実行し、スキャンされたファイル一覧を表示させます。
今回は2021_JP_Region_Mobility_Report.csv
のみにチェックを入れ、リソースの追加を行います。
5.リソースの追加結果です。テキストファイルを読み込むため、各列のデータ型はすべてVARCHAR
型として読み込まれます。
6.リソースはデータソース配下で次のように表示されます。
7.カラム情報は以下のとおりです。
イントロスペクト後に取得されるメタデータの状態ではすべてのカラムがVARCHAR
になっています。
利用例
上記で追加したリソースをもとに、データ型を適切な型に変換させるビューl1_2021jp
を作成した例です。
変換後のカラム例は以下のとおりです。
実行計画の例は以下のとおりです。
-------------------------------------------------------
[ 1] Request # 102182
[ 2] + SELECT (9216, 1.1%)
[ 3] + FETCH (9216, 98.9%)
-------------------------------------------------------
[1] パス: Request # 102182
Server Version: TIBCO Data Virtualization 8.4.0.003 / Build HF-003|8771d8640c|2021-07-02
Rows Returned: 9216
Elapsed Execution Time: 1.3 secs (100%)
Query Initialization Time: 437.4 msecs (34%)
Foreground Server Processing Time: 9.5 msecs (1%)
Foreground Data Source Read Time: 824.9 msecs (65%)
Background Server Processing Time: 0 sec
Background Data Source Read Time: 0 sec
Speed Up due to Concurrency: All work was done in the background.
Peak memory reserved: 2000000
Submitted SQL: Select * from /shared/admin_shared/s3/l1_2021jp
Resolved SQL: SELECT l1_2021jp.country_region_code, l1_2021jp.country_region, l1_2021jp.sub_region_1, l1_2021jp.sub_region_2, l1_2021jp.metro_area, l1_2021jp.iso_3166_2_code, l1_2021jp.census_fips_code, l1_2021jp.place_id, l1_2021jp."date", l1_2021jp.retail_and_recreation_percent_change_from_baseline1, l1_2021jp.grocery_and_pharmacy_percent_change_from_baseline1, l1_2021jp.parks_percent_change_from_baseline1, l1_2021jp.transit_stations_percent_change_from_baseline1, l1_2021jp.workplaces_percent_change_from_baseline1, l1_2021jp.residential_percent_change_from_baseline1 FROM (SELECT "2021_JP_Region_Mobility_Report_csv".country_region_code, "2021_JP_Region_Mobility_Report_csv".country_region, "2021_JP_Region_Mobility_Report_csv".sub_region_1, "2021_JP_Region_Mobility_Report_csv".sub_region_2, "2021_JP_Region_Mobility_Report_csv".metro_area, "2021_JP_Region_Mobility_Report_csv".iso_3166_2_code, "2021_JP_Region_Mobility_Report_csv".census_fips_code, "2021_JP_Region_Mobility_Report_csv".place_id, CAST("2021_JP_Region_Mobility_Report_csv"."date" AS DATE) "date", CAST("2021_JP_Region_Mobility_Report_csv".retail_and_recreation_percent_change_from_baseline AS INTEGER) retail_and_recreation_percent_change_from_baseline1, CAST("2021_JP_Region_Mobility_Report_csv".grocery_and_pharmacy_percent_change_from_baseline AS INTEGER) grocery_and_pharmacy_percent_change_from_baseline1, CAST("2021_JP_Region_Mobility_Report_csv".parks_percent_change_from_baseline AS INTEGER) parks_percent_change_from_baseline1, CAST("2021_JP_Region_Mobility_Report_csv".transit_stations_percent_change_from_baseline AS INTEGER) transit_stations_percent_change_from_baseline1, CAST("2021_JP_Region_Mobility_Report_csv".workplaces_percent_change_from_baseline AS INTEGER) workplaces_percent_change_from_baseline1, CAST("2021_JP_Region_Mobility_Report_csv".residential_percent_change_from_baseline AS INTEGER) residential_percent_change_from_baseline1 FROM /shared/admin_shared/s3/mobility_report/"2021_JP_Region_Mobility_Report.csv" "2021_JP_Region_Mobility_Report_csv") l1_2021jp
Request ID: 102182
Session ID: 200347 Source Code: Select * from /shared/admin_shared/s3/l1_2021jp
Start Time: 1626330115677 End Time: 1626330116962
Elapsed Time: 1285000000
User Name: admin
-------------------------------------------------------
[2] パス: Request # 102182/SELECT (9216, 1.1%)
Name: SELECT Rows Returned: 9216
Estimated Rows Returned: Unknown (at least 0 rows)
Total execute time which include children time and wait time.: 834.4 msecs
Foreground Node Processing Time: 9.5 msecs
Peak memory reserved: 2000000
Projection: expr30.country_region_code, expr30.country_region, expr30.sub_region_1, expr30.sub_region_2, expr30.metro_area, expr30.iso_3166_2_code, expr30.census_fips_code, expr30.place_id, CAST(expr30."date" AS DATE) date, CAST(expr30.retail_and_recreation_percent_change_from_baseline AS INTEGER) retail_and_recreation_percent_change_from_baseline1, CAST(expr30.grocery_and_pharmacy_percent_change_from_baseline AS INTEGER) grocery_and_pharmacy_percent_change_from_baseline1, CAST(expr30.parks_percent_change_from_baseline AS INTEGER) parks_percent_change_from_baseline1, CAST(expr30.transit_stations_percent_change_from_baseline AS INTEGER) transit_stations_percent_change_from_baseline1, CAST(expr30.workplaces_percent_change_from_baseline AS INTEGER) workplaces_percent_change_from_baseline1, CAST(expr30.residential_percent_change_from_baseline AS INTEGER) residential_percent_change_from_baseline1
No Parallelization Reason: Passthrough query
-------------------------------------------------------
[3] パス: Request # 102182/SELECT (9216, 1.1%)/FETCH (9216, 98.9%)
Name: FETCH Rows Returned: 9216
Estimated Rows Returned: Unknown (at least 0 rows)
Total execute time which include children time and wait time.: 824.9 msecs
Foreground Data Source Read Time: 824.9 msecs
Peak memory reserved: 0
Data source path: /shared/admin_shared/s3/mobility_report
Data source type: AmazonS3 Data source driver name : Amazon S3
SQL: SELECT `expr30`.`country_region_code`,`expr30`.`country_region`,`expr30`.`sub_region_1`,`expr30`.`sub_region_2`,`expr30`.`metro_area`,`expr30`.`iso_3166_2_code`,`expr30`.`census_fips_code`,`expr30`.`place_id`,CAST(`expr30`.`date` AS DATE) AS `date`,CAST(`expr30`.`retail_and_recreation_percent_change_from_baseline` AS INTEGER) AS `expr12`,CAST(`expr30`.`grocery_and_pharmacy_percent_change_from_baseline` AS INTEGER) AS `expr15`,CAST(`expr30`.`parks_percent_change_from_baseline` AS INTEGER) AS `expr18`,CAST(`expr30`.`transit_stations_percent_change_from_baseline` AS INTEGER) AS `expr21`,CAST(`expr30`.`workplaces_percent_change_from_baseline` AS INTEGER) AS `expr24`,CAST(`expr30`.`residential_percent_change_from_baseline` AS INTEGER) AS `expr27` FROM `2021_JP_Region_Mobility_Report_csv` `expr30`
-------------------------------------------------------
IAMロールを利用した方法(Amazon EC2インスタンスのみ)
TDVサーバをAmazon EC2インスタンス上で稼働している場合、インスタンスに対し適切なS3読み込みポリシーを持つIAMロールを付与(アタッチ)すると、アクセスキーやシークレットの入力なしにS3バケットへ接続することができます。
IAMロールの作成およびアタッチ手順はAWSの下記記事の「IAM インスタンスプロファイルを EC2 インスタンスにアタッチする」までをご参照ください。
Amazon EC2 インスタンスに、Amazon S3 バケットへのアクセス権を付与するにはどうすればよいですか?
インスタンスへのアタッチ後、TDV Studioでサーバへログインします。
S3データソースの設定画面を開き、URIおよびリージョンを指定します。それ以外は設定いただく必要はありません。「接続テスト」をクリックして正常に接続できるかを確認してください。
接続できない場合は、ポリシーの許可対象となるバケットが正しく設定されているかを確認してください。