USER MANUALS

リモートテーブルの管理

ここでは、Administration Tool を使用してリモートテーブルを作成、編集、および削除する方法について説明します。

リモートテーブルの作成

リモートテーブルの作成方法は 3 つあります。

  1. Administration Tool のウィザードの使用。

  2. CREATE_REMOTE_TABLE ストアドプロシージャの使用。

  3. CREATE REMOTE TABLE コマンドの使用。基盤となるデータベースにテーブルを作成して、クエリの結果をこのテーブルに挿入します。ただし、関連する基本ビューを Virtual DataPort に作成することはありません。

ここでは、Administration Tool からリモートテーブルを作成する手順について説明します。以下の手順に従って実施してください。

  1. リモートテーブルの作成先の JDBC データソースを右クリックして [Create Remote Table] をクリックします。

    注釈

    この機能は、JDBC データソースの場合にのみサポートされています。HDFS ベースのデータベース (Hive、Impala、PrestoDB、Trino、Spark、Databricks) でこの機能を使用するには、まず データ一括読み込み を有効にする必要があります。

  2. 以下の情報を入力します。

Create remote table

リモートテーブルの作成

  • Target data source: リモートテーブルの作成先のデータソース。

  • Insert options: データをデータベースに挿入するプロセスを構成するパラメータ。すべてオプションであり、指定されない場合は実行エンジンがデフォルト値を使用します。

    使用可能なオプションは、データベースのタイプに依存します。

    • Batch insert size: 各バッチ挿入のタプルの数。

    • Location: Virtual DataPort がデータをアップロードする場所。場所はデータソースに応じて変わります。

      • Hadoop データソース (Hive、Impala、PrestoDB、Trino、Spark): HDFS URI。

      • Redshift: S3 バケット名。

      • Athena: S3 の場所。

    • Parquet row group size: 行グループのサイズ (MB 単位)。プロパティは、Virtual DataPort が Parquet ファイルを使用してデータを挿入するデータソース (Athena、Hive、Impala、PrestoDB、Trino、Spark) のみで有効です。

  • Remote table: 新しいリモートテーブルの名前、カタログ、およびスキーマを入力します。デフォルトでは、リモートテーブル名の最初の文字は A から Z または a から z のいずれかでなければなりません。次の文字は、a から z、A から Z、数字、アンダースコアのいずれかにします。リモートテーブル名は、ターゲットデータソースのデフォルトによる大文字と小文字の区別を使用して作成され、予約語にすることはできません。「 大文字と小文字を区別する識別子と Unicode 文字を使用したリモートテーブルの作成 」のセクションを参照してください。

  • Base view: 作成される基本ビューの情報を入力します。

  • VQL Query: 実行して、その結果を新しいリモートテーブルに挿入するクエリ。

    または別の方法として、[Server Explorer] からビューを [VQL Query] にドラッグして、このビューの定義からリモートテーブルを作成することもできます。

  1. [Create] をクリックします。

リモートテーブルを作成するために、実行エンジンは以下の処理を実行します。

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

  2. VQL クエリを実行します。

  3. このクエリの結果を、手順 1 で作成したデータベースのテーブルに挿入します。データソースで一括読み込み API の使用が有効である場合、実行エンジンは、データベースのデータの一括読み込み API を使用して結果を挿入します。

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

必要な権限

これを行うには、以下の権限が必要です。

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

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

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

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

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

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

要件

この機能を使用するには、データ移動が有効である必要があります。これを確認するには、 [Server Configuration] - [Queries Optimization] ダイアログを開きます。無効な場合、リモートテーブルの作成は失敗します。

大文字と小文字を区別する識別子と Unicode 文字を使用したリモートテーブルの作成

デフォルトでは、リモートテーブルの名前と列には a から z までの文字、数字、アンダースコア _ のみを使用でき、データソースのデフォルトによる大文字と小文字の区別を使用して作成されます。大文字と小文字を区別する識別子や、前述の文字とは異なる文字を含むテーブル名や列名を作成するには、以下のプロパティを有効にする必要があります。

SET 'com.denodo.vdb.util.tablemanagement.escapeDDLIdentifiersEnabled' = 'true';

これを無効にするには、以下のコマンドを実行してください。

SET 'com.denodo.vdb.util.tablemanagement.escapeDDLIdentifiersEnabled' = 'false';

このプロパティ値を変更した後、Denodo サーバーを再起動する必要はありません。

この機能が有効かどうかを確認するには、以下のコマンドを実行します。

call get_parameter('com.denodo.vdb.util.tablemanagement.escapeDDLIdentifiersEnabled');

Unicode 文字を使用して基本ビュー名や列名を作成する必要がある場合は、Virtual DataPort サーバーを Unicode モードで構成する必要があります。「 ID の文字セット 」を参照してください。

制限事項

テーブル名にアクセント符号や発音区別符号、他のアルファベット文字 (キリル文字、中国語、日本語など) といった特殊な Unicode 文字が含まれる場合、データの読み込みに外部実行可能ファイルを利用しているデータソースでは、データ一括読み込みが正しく機能しないことがあります。この場合、Denodo ではリモートテーブルを作成しますが、データ一括読み込みに失敗し、データは挿入されません。この問題が発生した場合、以下のエラーが表示されます。

  • Oracle: Error executing sqlldr command.

  • SQL Server: Error executing bcp command.

Hive、Impala、PrestoDB、Trino、Spark、Databricks など、Hadoop に依存する多くのデータソースでは、識別子として使用できる文字の範囲が限られています。a から z までの小文字、数字、アンダースコア _ のみがサポートされています。プロパティ 'com.denodo.vdb.util.tablemanagement.escapeDDLIdentifiersEnabled' を有効にすると、これらのデータソースには適用されません。他の文字を含む名前でリモートテーブルを作成しようとすると、これらのデータソースではリモートテーブルの作成に失敗します。この問題が発生した場合、以下のエラーが表示されます。

Invalid table name.The identifier '<identifier>' contains unsupported characters for Spark SQL 2.x

注釈

組み込み MPP でリモートテーブルを作成する場合は、そのテーブルに対して COMPUTE_SOURCE_TABLE_STATS ストアドプロシージャを実行することをお勧めします。

リモートテーブルの編集

リモートテーブルを編集するには、リモートテーブルに関連付けられている基本ビューを開いて [Edit Remote] をクリックします。

Edit remote table and base view

リモートテーブルの編集

必要な変更を行った後、[Create] をクリックします。実行エンジンが以下の処理を実行します。

  1. 基盤となるデータベースから現在のテーブルを削除します。このテーブルのデータはすべて失われます。

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

  3. Virtual DataPort でクエリを実行します。

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

  5. 既存の基本ビューを、手順 2 で作成したテーブルのスキーマを使用する新しい基本ビューで置き換えます。基本ビューに依存エレメントが存在する場合、スキーマの変更は 伝達しません

リモートテーブルをプログラムから変更する場合、 CREATE_REMOTE_TABLE ストアドプロシージャを使用します。

データの更新

リモートテーブルのデータを更新するには、複数の方法があります。

  1. REFRESH コマンドを実行する。

  2. グラフィカル (Design Studio または Administration Tool): リモートテーブルに関連付けられている基本ビューを開き、[Refresh Data] をクリックする。

Refresh the remote table data

リモートテーブルのデータの更新

どちらの場合も、実行エンジンは、以下の処理を実行します。

  1. 基盤となるデータベースから現在のテーブルを消去します。つまり、このテーブルのデータをすべて削除します。リモートテーブルが存在しない場合、Virtual DataPort サーバーがリモートテーブルを作成します。

  2. このリモートテーブルに関連付けられたクエリを実行します。

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

また、新しいデータを挿入するには、 INSERT command を使用するか、 Denodo Scheduler Module を使用して定期的に更新するようにスケジュールします。この場合、シナリオによっては、増分挿入を行い、特定の時間内に変更されたデータを更新できます。これらの操作については、「 INSERT Statement 」および「 VDPDataLoad Extraction Section 」のセクションを参照してください。

リモートテーブルの削除

Administration Tool からリモートテーブルを削除する場合、それに関連付けられている基本ビューを削除します。必要に応じて、基盤となるデータベースからテーブルも削除できます。これは、通常の基本ビューの削除とは異なります。なぜなら、通常の基本ビューの場合、基盤となるデータベースは変更されないからです。

リモートテーブルに関連付けられている基本ビューを削除すると、以下のようなダイアログが表示されます。

Drop remote table and base view without dependencies

[Yes] をクリックすると、基本ビューに加えて、基盤となるデータベースのテーブルが削除されます。

複数のリモートテーブルを一度に削除する場合、以下のようなダイアログが表示されます。

Drop multiple remote tables and base views with dependencies

リモートテーブルをプログラムで削除するには、 DROP_REMOTE_TABLE ストアドプロシージャを使用します。

Add feedback