すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Vertica

最終更新日:Mar 01, 2026

Vertica は、超並列処理 (MPP) アーキテクチャを使用する列指向データベースです。Vertica データソースは、Vertica との間でデータの読み書きを行うための双方向チャネルを提供します。このトピックでは、DataWorks における Vertica データソースのデータ同期機能について説明します。

サポートしているバージョン

Vertica Reader は、Vertica データベースドライバーを使用して Vertica にアクセスします。ご使用の Vertica サービスとドライバーに互換性があることを確認する必要があります。DataWorks では、以下のバージョンのドライバーを使用します。

<dependency>
<groupId>com.vertica</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>7.1.2</version>
</dependency>

制限事項

サポートしているフィールドタイプ

整数、浮動小数点数、文字列、時間など、一般的な Vertica のデータ型がサポートされています。高度なデータ型のサポートには制限があります。

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます

データ同期タスクの開発

同期タスクの設定のエントリーポイントと手順については、以下の設定ガイドをご参照ください。

単一テーブルのオフライン同期タスクの設定ガイド

付録:スクリプト例とパラメーターの説明

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでのタスクの設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。

Reader スクリプトの例

{
"type": "job",
"steps": [
{
"stepType": "vertica", // プラグイン名。
"parameter": {
"datasource": "", // データソース名。
"where": "",
"column": [ // 列。
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [ // テーブル名。
"table"
]
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" // エラーレコード数。
},
"speed": {
"throttle": true, // throttle が false の場合、mbps パラメーターは有効にならず、速度制限は無効になります。throttle が true の場合、速度制限は有効になります。
"concurrent": 1, // 同時実行ジョブ数。
                        "mbps":"12"// 最大転送レート。1 mbps は 1 MB/s に相当します。
}
}
}

Reader スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。この値は、コードエディタで追加したデータソースの名前と同じである必要があります。

はい

なし

table

データを同期するテーブル。JSON 配列を使用してテーブルをリストします。複数のテーブルから同時にデータを読み取ることができます。

複数のテーブルを設定する場合、それらが同じスキーマを持つことを確認してください。Vertica Reader は、テーブルのロジックが一貫しているかどうかをチェックしません。

説明

table パラメーターは、connection 設定ブロックに含める必要があります。

はい

なし

column

ソーステーブルから同期する列。JSON 配列を使用して列を記述します。デフォルトでは、すべての列が使用されます (例:`["*"]`)。

  • 列のプルーニングがサポートされています。列のサブセットをエクスポートできます。

  • 列の並べ替えがサポートされています。テーブルスキーマとは異なる順序で列をエクスポートできます。

  • 定数がサポートされています。

  • column パラメーターは、同期する列を明示的に指定する必要があり、空にすることはできません。

はい

なし

splitPk

Vertica Reader がデータを抽出する際に splitPk パラメーターを指定すると、splitPk が表すフィールドに基づいてデータがパーティション分割されます。これにより、データ同期で同時実行タスクを開始でき、同期効率が向上します。

  • splitPk パラメーターには、テーブルのプライマリキーを使用してください。プライマリキーは通常、均等に分散されているため、パーティション分割されたシャードでのデータホットスポットの発生を防ぐのに役立ちます。

  • 現在、splitPk は整数列のデータパーティション分割のみをサポートしています。文字列、浮動小数点数、日付などの他のデータ型はサポートされていません。サポートされていないデータ型を指定すると、Vertica Reader はエラーを報告します。

  • splitPk を空のままにすると、テーブルはパーティション分割されません。データは単一チャネルで抽出されます。

いいえ

なし

where

フィルター条件。 Vertica Reader は、columntable、および where パラメーターからデータを抽出するための SQL 文を構築します。

たとえば、テスト中に where 条件を指定できます。実際のビジネスシナリオで、当日のデータを同期するには、where 条件を gmt_create > $bizdate に設定できます。

  • where 条件により、効率的な増分同期が可能になります。

  • where 条件を設定しないか、空のままにすると、テーブルのすべてのデータが同期されます。

いいえ

なし

querySql

一部のビジネスシナリオでは、where パラメーターだけではフィルター条件を記述するのに不十分な場合があります。このパラメーターを使用して、フィルタリング用のカスタム SQL 文を定義できます。このパラメーターを設定すると、データ同期システムは tablescolumns、および splitPk パラメーターを無視し、カスタム SQL 文を使用してデータをフィルタリングします。

querySql を設定すると、Vertica Reader は tablecolumn、および where パラメーターを無視します。

いいえ

なし

fetchSize

このパラメーターは、各バッチでデータベースサーバーから取得するレコード数を指定します。この値は、Data Integration とサーバー間のネットワーク対話の数を決定し、データ抽出パフォーマンスを大幅に向上させることができます。

説明

fetchSize を大きな値 (> 2048) に設定すると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。

いいえ

1024

Writer スクリプトの例

{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"vertica",// プラグイン名。
"parameter":{
"datasource": "data_source_name",
"column": [// 列。
"id",
"name"
],
"connection": [
{
"table": [// テーブル名。
"vertica_table"
]
}
],
"preSql": [ // データ同期タスクの実行前に実行する SQL 文。
"delete from @table where db_id = -1"
],
"postSql": [// データ同期タスクの実行後に実行する SQL 文。
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーレコード数。
},
"speed":{
                    "throttle":true,// throttle が false の場合、mbps パラメーターは有効にならず、速度制限は無効になります。throttle が true の場合、速度制限は有効になります。
                    "concurrent":1, // 同時実行ジョブ数。
                    "mbps":"12"// 最大転送レート。1 mbps は 1 MB/s に相当します。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。この値は、コードエディタで追加したデータソースの名前と同じである必要があります。

はい

なし

jdbcUrl

ターゲットデータベースの Java Database Connectivity (JDBC) URL。jdbcUrl パラメーターは、connection 設定ブロックに含まれます:

  • データベースごとに 1 つの値のみを指定できます。双方向データインポートシナリオのように、同じデータベースに対して複数のプライマリデータベースはサポートされていません。

  • jdbcUrl の形式は、公式の Vertica 形式と同じであり、追加の接続パラメーターを含めることができます。例:jdbc:vertica://127.0.0.1:3306/database

はい

なし

username

データソースのユーザー名。

はい

なし

password

指定されたユーザー名のパスワード。

はい

なし

table

JSON 配列で、同期するテーブルの名前を指定します。

説明

table パラメーターは connection 設定ブロックに含める必要があります。

はい

なし

column

データが書き込まれるターゲットテーブルの列。列はカンマで区切ります。例:"column": ["id", "name", "age"]

はい

なし

preSql

データがターゲットテーブルに書き込まれる前に実行される標準 SQL 文。SQL 文がテーブルを操作する場合、@table を使用してテーブル名を表します。SQL 文の実行時に、この変数は実際のテーブル名に置き換えられます。

いいえ

なし

postSql

データがターゲットテーブルに書き込まれた後に実行される標準 SQL 文。

いいえ

なし

batchSize

1 回のバッチでコミットするレコード数。この値を設定すると、データ同期システムと Vertica 間のネットワーク対話を大幅に削減し、全体的なスループットを向上させることができます。この値が高すぎると、データ同期プロセスで OOM エラーが発生する可能性があります。

いいえ

1024