USER MANUALS

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
    , create_table_template : text
    , create_table_template_parameters : text
)
  • remote_table_name: JDBC データソースの基盤となるデータベース内の新しいテーブルの名前。ターゲットデータベース内で有効な ID である必要があり、予約語であってはいけません。先頭の文字は、大文字 (A ~ Z) または小文字 (a ~ z) の 1 文字である必要があります。次の文字は、小文字、大文字、数字、またはアンダースコアの 1 文字である必要があります。

  • 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 コマンド 」を参照してください。

  • create_table_template (オプション): データソースにリモートテーブルを作成するために Denodo が使用する CREATE TABLE コマンドテンプレート。@{parameter_name} という構文のパラメータを含みます。詳細については、「 テーブル作成テンプレート 」を参照してください。

  • create_table_template_parameters (オプション): テンプレートのユーザー定義パラメータの値を設定するために使用するプロパティ。形式は、'parameter_name_1=value_1, parameter_name_2=value_2, ...' です。 オプション export with properties を使用してこのプロシージャで作成したビューをエクスポートした場合、これらのプロパティの値は環境プロパティファイルにエクスポートされます。詳細については、「 プロパティファイルへのエクスポート 」を参照してください。

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

このプロシージャは、各フェーズのステータスが格納された 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 データソースに対してのみ機能します (キャッシュエンジンでサポートされているデータベースのリスト)。

Teradata にデータを挿入する場合、実行エンジンは Teradata の増分ロード ( INSERT INTO <view> ON DUPLICATE KEY UPDATE <select query> ) よりも Teradata FastLoad メカニズムを優先します。Teradata FastLoad は、プライマリインデックスのあるテーブルに重複行を挿入することを許可しません。実行エンジンは、Teradata にリモートテーブルを作成するために使用される SELECT クエリに重複行を含めることができるかどうかを確認します。ビューのプライマリキーまたは GROUP BY が含まれる場合、クエリは重複行を返すことはできません。

  • 重複行を返すことができない場合: プライマリインデックスを使用してリモートテーブルを作成します。

  • 重複行を返すことができる場合: プライマリインデックスを使用せずにリモートテーブルを作成します。

VDP はいずれのケースでも FastLoad を使用します。一方、増分ロード機能は、最初のケース (プライマリインデックスを使用してテーブルを作成した場合) でのみ機能します。

必要な権限

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

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

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

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

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

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

ユーザーは、カスタムテーブル作成テンプレートを使用してリモートテーブルを作成する必要がある場合に備えて、JDBC データソースに対する Write 権限も必要です。

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
Add feedback