リモートテーブルの管理¶
ここでは、Design Studio を使用してリモートテーブルを作成、編集、および削除する方法について説明します。
注釈
この機能は、JDBC データソースの場合にサポートされており、他のタイプのソースではサポートされません。
HDFS ベースのデータベース (Hive、Impala、PrestoDB、Trino、Spark、Databricks) でこの機能を使用するには、まず データ一括読み込み を有効にする必要があります。
リモートテーブルの作成¶
リモートテーブルの作成方法は 3 つあります。
Design Studio のウィザードの使用。
CREATE_REMOTE_TABLE ストアドプロシージャの使用。
CREATE REMOTE TABLE コマンドの使用。基盤となるデータベースにテーブルを作成して、クエリの結果をこのテーブルに挿入します。ただし、関連する基本ビューを Virtual DataPort に作成することはありません。
ここでは、Design Studio を使用してリモートテーブルを作成する手順について説明します。以下の手順に従って実施してください。
リモートテーブルの作成先の JDBC データソースのコンテキストメニューをクリックして [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 文字を使用したリモートテーブルの作成 」のセクションを参照してください。
Manage custom DDL template: Denodo はデフォルトで組み込みの SQL ステートメント CREATE TABLE を使用してテーブルを作成します。デフォルトのステートメントでは不十分な場合に備えて、Denodo ではテーブル作成に使用するコマンドをカスタマイズできます。カスタムテンプレートの定義方法については、「 テーブル作成テンプレートのカスタマイズ 」のセクションを参照してください。
Base view: 作成される基本ビューの情報を入力します。
VQL Query: 実行して、その結果を新しいリモートテーブルに挿入するクエリ。
または別の方法として、[Server Explorer] からビューを [VQL Query] にドラッグして、このビューの定義からリモートテーブルを作成することもできます。
[Create] をクリックします。
リモートテーブルを作成するために、実行エンジンは以下の処理を実行します。
JDBC データソースの基盤となるデータベースにテーブルを作成します。
VQL クエリを実行します。
このクエリの結果を、手順 1 で作成したデータベースのテーブルに挿入します。データソースで一括読み込み API の使用が有効である場合、実行エンジンは、データベースのデータの一括読み込み API を使用して結果を挿入します。
このプロシージャは、手順 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';
このプロパティの現在の値を取得するには、以下を実行します。
SELECT property_value FROM get_parameter() WHERE input_property_name = '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、PrestoSQL、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] をクリックします。

リモートテーブルの編集¶
必要な変更を行った後、[Create] をクリックします。実行エンジンが以下の処理を実行します。
基盤となるデータベースから現在のテーブルを削除します。このテーブルのデータはすべて失われます。
JDBC データソースの基盤となるデータベースにテーブルを作成します。
Virtual DataPort でクエリを実行します。
クエリの結果を、手順 2 で作成したデータベースのテーブルに挿入します。
既存の基本ビューを、手順 2 で作成したテーブルのスキーマを使用する新しい基本ビューで置き換えます。基本ビューに依存エレメントが存在する場合、スキーマの変更は 伝達しません 。
リモートテーブルをプログラムから変更する場合、 CREATE_REMOTE_TABLE ストアドプロシージャを使用します。
データの更新¶
リモートテーブルのデータを更新するには、2 つの方法があります。
REFRESH コマンドを実行する。
グラフィカル、Design Studio を使用: リモートテーブルに関連付けられている基本ビューを開き、[Refresh Data] をクリックする。

リモートテーブルのデータの更新¶
どちらの場合も、実行エンジンは、以下の処理を実行します。
基盤となるデータベースから現在のテーブルを消去します。つまり、このテーブルのデータをすべて削除します。リモートテーブルが存在しない場合、Virtual DataPort サーバーがリモートテーブルを作成します。
このリモートテーブルに関連付けられたクエリを実行します。
クエリの結果を、手順 1 で作成したデータベースのテーブルに挿入します。
また、新しいデータを挿入するには、 INSERT command を使用するか、 Denodo Scheduler Module を使用して定期的に更新するようにスケジュールします。この場合、シナリオによっては、増分挿入を行い、特定の時間内に変更されたデータを更新できます。これらの操作については、「 INSERT Statement 」および「 VDPDataLoad Extraction Section 」のセクションを参照してください。
リモートテーブルの削除¶
Design Studio を使用してリモートテーブルを削除する場合、それに関連付けられている基本ビューを削除します。 必要に応じて 、基盤となるデータベースからテーブルを削除するように選択できます。これは、通常の基本ビューの削除とは異なります。なぜなら、通常の基本ビューの場合、基盤となるデータベースは変更されないからです。
リモートテーブルをプログラムで削除するには、 DROP_REMOTE_TABLE ストアドプロシージャを使用します。
テーブル作成テンプレートのカスタマイズ¶
定義されたクエリのデータを含むテーブルを作成するには、ほとんどのシナリオで組み込みの SQL ステートメント CREATE TABLE を使用します。デフォルトのステートメントでは不十分な場合に備えて、Denodo ではテーブル作成に使用するコマンドをカスタマイズできます。全体的なプロセスについては、「 テーブル作成テンプレートの管理 」のセクションを参照してください。キャッシュの構成とは対照的に、リモートテーブルやサマリのカスタムテンプレートを定義するには、テンプレートに入力する変数のうち、どれが列で、どれが環境固有の変数になるかを指定する必要があります。列になる変数が、VQL クエリで入力した変数と一致していることを確認してください。
以下の画像は、カスタムテンプレートで以下を指定する場合の例を示しています。
列
prod_category
に対するパーティション分割。環境固有の変数を使用した初期ストレージサイズ。
注釈
カスタムテンプレートを使用してパーティション分割を指定する場合、Hive スタイルのパーティション分割が必要なデータベースでは機能しないことに注意してください。句を含めるだけでなく、各種パーティションを作成するために Parquet のアップロードプロセスを変更する必要があるためです。

カスタムテンプレートを編集¶
CREATE TABLE 以外のステートメントを追加で指定することもできます。以下の画像は、カスタムテンプレートで以下を行う場合の例です。
テーブルを作成する。
ユーザーにテーブルの読み取り権限を付与する。
インデックスを作成する。
注釈
インデックス作成の特殊な例については、Virtual DataPort によるインデックス作成のサポート「 リモートテーブルまたはサマリの基盤となるデータベースでのインデックスの作成 」を考慮してください。カスタム DDL テンプレートは、組み込みのサポートで対応できない場合のみ使用します。

複数の ddl カスタムテンプレートの編集¶
テストボタンによってテンプレートで一時テーブルが作成され、最後にそのテーブルが削除されることに注意してください。このテストでは、テンプレートによって作成され、データベースによるカスケードで削除されない追加のエレメントは削除されません。