ビューの更新¶
Virtual DataPort では、基本ビューのデータを更新できます。基盤となるデータソースに格納されているデータを REFRESH
コマンドで更新します。このコマンドでは、テーブルに格納されている現在のデータが削除されたうえで新しいデータが挿入されます。このデータは、 リモートテーブル の作成に使用したデータ読み込みクエリを実行して取得します。このコマンドは、 CREATE_REMOTE_TABLE ストアドプロシージャを使用して作成した基本ビューでのみ使用できます。
REFRESH ステートメント¶
REFRESH ステートメントを使用してビューのデータを更新できます。このコマンドでは、以下の手順で、基盤となるデータソースのデータが更新されます。
データソースにあるリモートテーブルを切り詰めます。リモートテーブルが存在しない場合は、VDP によってリモートテーブルが作成されます。
リモートテーブルの作成に使用されたデータ読み込みクエリを VDP サーバーで実行します。
前の手順で実行したクエリで取得した行を、リモートテーブルに挿入します。
リモートテーブルが存在しない場合は、VDP によってリモートテーブルにインデックスが再作成されます。
REFRESH <crt_base_view:identifier>
[ OPTIONS ( <option information> [ , <option information> ]* ) ]
[ CONTEXT ( <context information> [, <context information> ]* ) ]
[ TRACE ]
<crt_base_view> ::= CREATE_REMOTE_TABLE プロシージャまたは Create Remote Table フォームで作成した基本ビュー (「 VQL ステートメントの基本エレメント 」を参照)。
<option information> := 更新を設定するためのオプションのパラメータ。使用できるオプションの詳細については、「 CREATE REMOTE TABLE コマンド 」を参照してください。
<context information> ::= デフォルトで構成された値を上書きせずにクエリを実行できるように、特定の構成設定を変更するために使用する句 (「 CONTEXT 句の構文 」を参照)。
必要な権限
ユーザーには、以下の権限が必要です。
ビューに対する
Insert
、またはビューが置かれているデータベースに対するConnect
およびWrite
。データ読み込みクエリで参照するビューに対する
Execute
。
例:
以下の例は、 CREATE_REMOTE_TABLE ストアドプロシージャを使用して作成された基本ビューを更新します。
リモートテーブル sales_current_year
と基本ビュー sales_year
を作成するコマンド。
CALL CREATE_REMOTE_TABLE('sales_current_year', false,
'SELECT * FROM sales WHERE year = getyear(CURRENT_DATE())',
'data_source_database_name', 'data_source_name', null, 'schema_name',
'denodo_database_name', 'sales_year', '/', false)
基本ビュー sales_year
のデータを更新するコマンド。
REFRESH "sales_year";
REFRESH コマンドによって以下の手順が実行されます。
TRUNCATE sales_year
INSERT INTO sales_year SELECT * FROM sales WHERE year = getyear(CURRENT_DATE())