CREATE_REMOTE_TABLE

説明

ストアドプロシージャ CREATE_REMOTE_TABLE は、 リモートテーブル 機能のコンポーネントの 1 つです。管理ガイドの「 リモートテーブル 」のセクションで、リモートテーブルについて詳しく説明しています。

このプロシージャは、以下の処理を実行します。

  1. JDBC データソースの基盤となるデータベースにテーブルを作成する。

  2. Virtual DataPort サーバーでクエリを実行する。

  3. クエリの結果を、手順 1 で作成したデータベースのテーブルに挿入する。

  4. このプロシージャは、手順 1 で作成したテーブルから基本ビューを作成する。

手順 1 ~ 3 を実行するために、このプロシージャは CREATE REMOTE TABLE コマンドを呼び出して、基本ビューを作成します (手順 4)。

DROP_REMOTE_TABLE プロシージャは、このプロシージャによって作成された基本ビューと、基盤となるデータベースに作成されたテーブルを削除します。

構文

CREATE_REMOTE_TABLE(
      remote_table_name : text
    , replace_remote_table_if_exist : boolean
    , query : text
    , datasource_database_name : text
    , datasource_name : text
    , datasource_catalog : text
    , datasource_schema : text
    , base_view_database_name : text
    , base_view_name : text
    , base_view_folder : text
    , replace_base_view_if_exist: boolean
    , options : text
)
  • remote_table_name: JDBC データソースの基盤となるデータベース内の新しいテーブルの名前。ターゲットデータベース内で有効な ID である必要があります。

  • replace_remote_table_if_exist (オプション): この値が true で、同名のテーブルがデータベース (同じスキーマ/カタログ) にすでに存在する場合、このプロシージャはそのテーブルを削除してから再び作成します。デフォルト値は false です。そのため、同名のテーブルがすでに存在する場合、このプロシージャは失敗します。

  • query: データベースの新しいテーブルに挿入されるデータを取得するために Virtual DataPort サーバーで実行されるクエリ。

  • datasource_database_name (オプション): 新しいテーブルが作成される JDBC データソースのデータベース。 null の場合、現在のデータベースの datasource_name を検索します。

  • datasource_name: テーブルが作成されるデータベースを指す JDBC データソース。

  • datasource_catalog (オプション): テーブルが作成されるデータベースのカタログ。データベースがカタログをサポートしていない場合、これを null に設定します。

  • datasource_schema (オプション): テーブルが作成されるデータベースのスキーマ。データベースがスキーマをサポートしていない場合、これを null に設定します。

  • base_view_database_name (オプション): 基本ビューが作成される Virtual DataPort データベース。 null の場合、基本ビューは現在のデータベースに作成されます。

  • base_view_name (オプション): 新しい基本ビューの名前。 null の場合、名前は remote_table_name の値になります。

  • base_view_folder (オプション): 基本ビューが作成されるフォルダー。フォルダーが存在しない場合は、このプロシージャによって作成されます。 null の場合、基本ビューはルートフォルダーに作成されます。

  • replace_base_view_if_exist (オプション): true で、同名のビューが Virtual DataPort データベースにすでに存在する場合、このプロシージャはそのビューを削除してから再び作成します。デフォルト値は false です。そのため、同名のビューがすでに存在する場合、このプロシージャは失敗します。

  • options (オプション): CREATE REMOTE TABLE コマンドの一部のプロパティのデフォルト値を変更するためのオプション。 'option1=value1, option2=value2, ...' という形式で指定します。使用可能なオプションについては、「 CREATE REMOTE TABLE コマンド 」を参照してください。

ストアドプロシージャの結果

このプロシージャは、各フェーズのステータスが格納された 3 つの行を返します。このストアドプロシージャの結果には、以下の列が含まれます。

  • Stored Procedure Result (text): このフェーズで実行されたタスクの概要。

  • phase (int): フェーズ番号。3 つのフェーズがあります。

  • remote_table (text): 基盤となるデータベースに作成されたリモートテーブルの名前。

  • base_view (text): このプロシージャによって作成された基本ビューの名前。

  • base_view_database (text): このプロシージャによって基本ビューが作成されたデータベース。

  • inserted_rows (int): リモートテーブルに挿入された行の数。

  • error (boolean): フェーズの実行中にエラーが存在した場合は true、それ以外の場合は false。

  • status (text): フェーズの結果を表す状態。ステータスのリストは以下のとおりです。

OK, UNKNOWN, INVALID_BASE_VIEW_NAME, VIEW_ALREADY_EXISTS,
CATALOG_SCHEMA_NOT_SPECIFIED, NO_CREATE_FOLDER_PRIVILEGE, INVALID_FOLDER_NAME,
EMPTY_QUERY, MORE_THAN_ONE_QUERY, INVALID_QUERY, DATASOURCE_DOES_NOT_EXIST,
INVALID_CATALOG, INVALID_SCHEMA, REMOTE_TABLE_ALREADY_EXISTS

CREATE_REMOTE_TABLE ストアドプロシージャの結果の例

stored procedure result

phase

remote_table

base_view

database

inserted_rows

error

status

Step 1 of 3: Created remote table '<table_name>' successfully.

1

table_name

NULL

NULL

NULL

false

OK

Step 2 of 3: Inserted 2 rows into remote table '<table_name>'.

2

table_name

NULL

NULL

2

false

OK

Step 3 of 3: Created base view '<view_name>' successfully in the '<vdp_database>' database.

3

NULL

view_name

vdp_database

NULL

false

OK

注意

ターゲットデータベースが HDFS (Hadoop、Impala、Hive) に基づいている場合、このプロシージャを実行する前に、データソースで一括データロードを有効にする必要があります。

このプロシージャは、JDBC データソースに対してのみ機能します。

必要な権限

ユーザーには、以下の権限が必要です。

  • JDBC データソースのデータベースに対する Connect 権限。

  • JDBC データソースに対する Execute 権限。

  • 基本ビューが作成される Virtual DataPort データベースに対する Connect 権限および Create view 権限。

  • 基本ビューが作成されるデータベースに対する Create folder 権限 (このプロシージャがフォルダーに基本ビューを作成する必要があり、フォルダーが存在しない場合)。

  • クエリで参照されるビューに対する Execute 権限。

JDBC データソースのユーザーアカウントは、基盤となるデータベースにテーブルを作成できる必要があります。

SELECT *
FROM CREATE_REMOTE_TABLE()
WHERE datasource_database_name = 'common_sources'
  AND datasource_name = 'ds_jdbc_oracle'
  AND datasource_catalog = ''
  AND datasource_schema = 'REPORTING'
  AND remote_table_name = 'reporting_customer360_state_ca'
  AND replace_remote_table_if_exist = true
  AND query = 'SELECT * FROM customer WHERE state = ''CA'''
  AND base_view_database_name = 'customer360'
  AND base_view_name = 'customer360_state_ca'
  AND base_view_folder = '/reporting_customer'
  AND replace_base_view_if_exist = false;

query はリテラルであるため、一重引用符をエスケープする必要があります。

この例は、以下の操作を実行します。

  1. 「REPORTING」スキーマで、データソース「ds_jdbc_oracle」のデータベースにテーブル「reporting_customer360_state_ca」が存在するかどうかをチェックします。存在する場合、このテーブルを削除します。

  2. 同じスキーマで、「query」の結果を格納するためにテーブル「reporting_customer360_state_ca」を作成します。

  3. クエリを実行し、結果をこのテーブルに挿入します。

  4. フォルダー「/reporting_customer」を作成します。

  5. このフォルダーに、JDBC 基本ビュー「customer360_state_ca」を作成します。このビューは、データソース「ds_jdbc_oracle」のデータベースの「reporting_customer360_state_ca」テーブルに対してクエリを実行します。

Virtual DataPort Administration Tool

このプロシージャで作成された基本ビューを開くと、ダイアログの最下部にある [Data load query] ボックスにソースクエリが表示されます。

Base view created with *CREATE_REMOTE_TABLE* procedure

また、ビューの [Edit] ダイアログの [Metadata] タブにも表示されます。

Metadata tab of a base view created with *CREATE_REMOTE_TABLE* procedure