VDPDataLoad 抽出セクション

VDPDataLoad タイプのジョブの抽出セクションを構成するには、VDP タイプの データソース を選択する必要があります。選択後に、[Add Load Process] をクリックすると、VDP ビューのデータを更新する複数のロードプロセスが作成される場合があります。

さらに、ジョブ実行時に同時に実行するロードプロセスの数も構成できます ([Concurrency Level])。

[Add Load Process] をクリックすると、作成するロードプロセスのタイプを選択できます。

  • JDBC テーブル: JDBC テーブルやリモートテーブルの増分データ更新または完全データ更新を実行します。

  • サマリ: サマリの増分ロードまたは完全ロードを実行します。

JDBC テーブルのロードプロセス

各ロードプロセス (Example of the extraction section of a VDPDataLoad job) は、次の内容から構成されます。

  • VDP データベース: ビューコンボボックスでのビューの取得に使用する VDP データベースを指定できます。

  • データを更新/挿入する VDP ビュー: このコンボボックスの JDBC テーブルのビューとリモートテーブルのビューは、データベースコンボボックスで選択したデータベースから取得されます。VDP データベースのコンボボックスが存在しない場合、このコンボボックスのビューはジョブに構成された VDP データソースから取得されます (データソースに指定されたデータベースからのビューだけではなく、ユーザーがアクセス許可を持つ各データベースからのすべてのビューがリストされます)。対応する VDP サーバーが稼働中である必要があります (いつでもビューを VDP データソースから再読み込みできる更新ボタンがあります)。

  • クエリ オプション: VDP に送信されるクエリの OPTIONS 句のプロパティを指定し、挿入を設定できます。なお、データソースの中には、一部のパラメータをサポートしないものも存在します。使用可能な挿入オプションは以下のとおりです。

    • batch_insert_size: 各バッチ挿入のタプルの数。

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

  • Incremental セレクター: このセレクターは、選択したビューがリモートテーブルの場合のみ表示されます。通常の JDBC ビューは常に増分ロードを実行するため、セレクターは表示されません。

    • 有効化 した場合、増分データロードが実行されます。読み込みクエリで取得したデータは選択したビューに挿入されます。ビュー上の既存のデータは削除されません。読み込みクエリを定義するフィールドを使用できます。

    • 無効化 した場合、デフォルトの読み込みクエリを使用して、JDBC テーブルのビューやリモートテーブルのビューのデータがすべて更新されます。つまり、テーブル上の既存のデータがすべて削除され、デフォルトの読み込みクエリによって取得したデータが挿入されます。

増分ロードの構成

以下のフィールドは、[Incremental] セレクターが有効化されている場合のみ使用できます。

  • Load Query Selector: 選択したビューに挿入するデータの抽出に使用する読み込みクエリの作成方法に応じて、オプション [Custom conditions] と [Custom Load Query] を選択します。このセレクターが表示されるのはリモートテーブルの基本ビューのみです。通常の JDBC ビューは、常に Custom Load Query による増分読み込みを行います。

    • Custom Load Query: このオプションを選択した場合、読み込みクエリをユーザーが手動で定義します。

      • デフォルトでは、この値はリモートテーブルの作成に使用した読み込みクエリです。あるいは、選択したビューがリモートテーブルではない場合、デフォルトは空となります。ユーザーは希望するデータを取得できるようにデフォルト値を変更可能です。クエリの結果は JDBC テーブルまたはリモートテーブルに挿入される行です。

      • カスタム読み込みクエリを作成する際は、 OFFSET 句、 LIMIT 句、 FETCH 句を使用できません。これは、 INSERT 文がこれらの句をサポートしないためです。

    • Custom Conditions: このオプションを選択した場合、読み込みクエリはテーブルの作成時に使用した読み込みクエリの where 句に、ユーザーが選択した [Field Name] と [Custom Conditions] の値から成る条件句を加えたものとなります。

      • Field Name: ビューからフィールドを選択する場合、条件 fieldName > @LAST_REFRESH_DATE が読み込みクエリに追加されます。ユーザーが [Custom Conditions] を選択した場合、[Field Name] は任意です。

      • Custom Conditions: 読み込みクエリの where 句です。ユーザーが [Field Name] を選択済みの場合、[Custom Conditions] は任意です。ユーザーは次の 2 つのコンボボックスを使用して条件を作成できます。

        • 1 つは、選択したビューの フィールドを条件に追加 するためのものです (必須フィールドが示されます)。このコンボは、新しいビューが選択されるたびに更新されます (VDP データソースがアクセス可能な場合)。

        • もう 1 つは、条件に 演算子を追加 するためのものです。このコンボには条件で使用できるすべての指定可能な演算子が含まれます。

        増分ロードを行う場合、 \@LAST_REFRESH_DATE 変数を使用して最終実行日時を参照できます。

  • Enable update on duplicate keys オプション: 有効化した場合、指定したフィールドと同じ値の行が挿入ではなく更新されます。フィールドを選択するには、オプションの [Update on duplicate keys field] を使用します。このフィールドに値が入っていない場合、プライマリキーを利用可能であればプライマリキーが選択されます。

生成されるクエリ

これらのフィールドの値を考慮すると、VDP データソースに送信されるクエリは以下のようになります。

非増分

REFRESH view
[ OPTIONS ( <option information> [ , <option information> ]* ) ]
TRACE

この場合

<option information> ::=
      'batch_insert_size' = <literal>
      | 'parquet_row_group_size' = <literal>

増分

INSERT INTO view
{ ON DUPLICATE KEY UPDATE |
  ON DUPLICATE KEY ( <field name> [, <field name>]* ) UPDATE }
  [ OPTIONS ( <option information> [ , <option information> ]* ) ]
<select load query>
[ TRACE ]

ここで、 select load query は、

  • Custom Conditions の場合

<select load query> ::= select * from (<default load query> <conditions clause>)

default load queryWHERE 句の有無に応じて、 conditions clauseAND または WHERE を付加します。

<conditions clause> ::=  WHERE <conditions>
                            | AND <conditions>
<conditions> ::= <fieldName> > @LAST_REFRESH_DATE
                            | <custom_conditions>
                            | <fieldName> > @LAST_REFRESH_DATE AND <custom_conditions>
  • Custom Load Query の場合

<select load query> ::= <custom load query>

また、フィールド [Load Process Name] では、ユーザーが各ロードプロセスにわかりやすい名前を指定できます。この名前はロードプロセスを特定しやすいよう、それらプロセスのリストに表示されます。デフォルトでは、プリロードされたビューの名前が表示されます (同じ名前を複数のロードプロセスに割り当てることはできません)。

Example of the extraction section of a VDPDataLoad job

VDPDataLoad ジョブの抽出セクションの例

サマリロードプロセス

サマリロードプロセスは JDBC ロードプロセスと同様です。相違点として、[Incremental] セレクターを有効化した場合、ユーザーは [Custom Load Query] オプションしか選択できません。[Custom Conditions] や [Field name] は使用できません。

各ロードプロセスの構成は以下のとおりです。

  • VDP データベース: ビューコンボボックスでのビューの取得に使用する VDP データベースを指定できます。

  • データを更新/挿入する VDP ビュー: このコンボボックスのサマリビューは、データベースコンボボックスで選択したデータベースから取得されます。VDP データベースのコンボボックスが存在しない場合、このコンボボックスのビューはジョブに構成された VDP データソースから取得されます (データソースに指定されたデータベースからのビューだけではなく、ユーザーがアクセス許可を持つ各データベースからのすべてのビューがリストされます)。対応する VDP サーバーが稼働中である必要があります (いつでもビューを VDP データソースから再読み込みできる更新ボタンがあります)。

  • クエリ オプション: VDP に送信されるクエリの OPTIONS 句のプロパティを指定し、挿入を設定できます。なお、データソースの中には、一部のパラメータをサポートしないものも存在します。使用可能な挿入オプションは以下のとおりです。

    • batch_insert_size: 各バッチ挿入のタプルの数。

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

  • Incremental セレクター

    • 有効化 した場合、増分データロードが実行されます。読み込みクエリで取得したデータは選択したビューに挿入されます。ビュー上の既存のデータは削除されません。読み込みクエリを定義するフィールドを使用できます。

    • 無効化 した場合、デフォルトの読み込みクエリを使用して、サマリビューのデータがすべて更新されます。つまり、テーブル上の既存のデータがすべて削除され、デフォルトの読み込みクエリによって取得したデータが挿入されます。

増分ロードの構成

以下のフィールドは、[Incremental] セレクターが有効化されている場合のみ使用できます。

  • Custom Load Query

    • デフォルトでは、この値はサマリの作成に使用した読み込みクエリです。ユーザーは希望するデータを取得するようにデフォルト値を変更できます。クエリの結果はサマリに挿入される行です。

    • カスタム読み込みクエリを作成する際は、 OFFSET 句、 LIMIT 句、 FETCH 句を使用できません。これは、 INSERT 文がこれらの句をサポートしないためです。

  • Enable update on duplicate keys オプション: 有効化した場合、指定したフィールドと同じ値の行が挿入ではなく更新されます。フィールドを選択するには、オプションの [Update on duplicate keys field] を使用します。このフィールドに値が入っていない場合、プライマリキーを利用可能であればプライマリキーが選択されます。

生成されるクエリ

これらのフィールドの値を考慮すると、VDP データソースに送信されるクエリは以下のようになります。

非増分

REFRESH summary_view
[ OPTIONS ( <option information> [ , <option information> ]* ) ]
TRACE

この場合

<option information> ::=
      'batch_insert_size' = <literal>
    | 'parquet_row_group_size' = <literal>

増分

INSERT INTO summary_view
{ ON DUPLICATE KEY UPDATE |
  ON DUPLICATE KEY ( <field name> [, <field name>]* ) UPDATE }
  [ OPTIONS ( <option information> [ , <option information> ]* ) ]
<custom load query>
[ TRACE ]

また、フィールド [Load Process Name] では、ユーザーが各ロードプロセスにわかりやすい名前を指定できます。この名前はロードプロセスを特定しやすいよう、それらプロセスのリストに表示されます。デフォルトでは、プリロードされたビューの名前が表示されます (同じ名前を複数のロードプロセスに割り当てることはできません)。

一般的な考慮事項

ジョブテーブルの「Extracted」列と「Processed」列の値の意味は次のとおりです。

  • 「Extracted」列には、定義された読み込みクエリを使用して VDP ビューから抽出したタプルの数が表示されます。

  • 「Inserted」列には、リモート/JDBC テーブル、またはサマリに挿入されたタプルの数が表示されます。

どちらの列も個別のロードプロセスの値の集計を示しています。何らかの警告またはエラーがある場合は、最終的にそのロードプロセスのレポートを個別に確認することができます。「Extracted」と「Inserted」のどちらの列も、各プロセスで生成されたエラーの数、つまり、それぞれ抽出エラーの数と挿入エラーの数を示します (他のジョブタイプと同様に、エラーがない場合、エラーの数は示されません)。

注釈

VDP へのコネクションが失われた場合、ユーザーは作業内容が失われないように、ジョブをドラフトとして保存できます。