Amazon Redshift のデータソースは、Amazon Redshift からの読み取りと Amazon Redshift への書き込みを行うための双方向チャンネルを提供します。これにより、コードレス UI またはコードエディタを使用してデータ同期タスクを構成できます。このトピックでは、Amazon Redshift のデータ同期機能について説明します。
サポートされている Amazon Redshift のバージョン
Amazon Redshift は redshift-jdbc4.2 ドライバー 2.1.0.1 を使用します。ドライバーの機能の詳細については、「Amazon Redshift 用 JDBC ドライバーの構成」をご参照ください。
サポートされているフィールドの型
Amazon Redshift のフィールドの型の詳細については、「公式 Amazon Redshift ドキュメント」をご参照ください。次の表に、サポートされている主要なフィールドの型を示します。
Amazon Redshift の型 | SQL の型 | Java の型 |
BIGINT | SQL_BIGINT | Long |
BOOLEAN | SQL_BIT | Boolean |
CHAR | SQL_CHAR | String |
DATE | SQL_TYPE_DATE | java.sql.Date |
DECIMAL | SQL_NUMERIC | BigDecimal |
DOUBLE PRECISION | SQL_DOUBLE | Double |
GEOMETRY | SQL_ LONGVARBINARY | byte[] |
INTEGER | SQL_INTEGER | Integer |
OID | SQL_BIGINT | Long |
SUPER | SQL_LONGVARCHAR | String |
REAL | SQL_REAL | Float |
SMALLINT | SQL_SMALLINT | Short |
TEXT | SQL_VARCHAR | String |
TIME | SQL_TYPE_TIME | java.sql.Time |
TIMETZ | SQL_TYPE_TIME | java.sql.Time |
TIMESTAMP | SQL_TYPE_ TIMESTAMP | java.sql.Timestamp |
TIMESTAMPTZ | SQL_TYPE_ TIMESTAMP | java.sql.Timestamp |
VARCHAR | SQL_VARCHAR | String |
データ同期の事前準備
DataWorks でデータを同期する前に、データソースと サーバーレスリソースグループ または Data Integration のデータ統合専用リソースグループとの間にネットワーク接続を確立し、リソースグループが内部ネットワーク経由でデータソースにアクセスできるようにする必要があります。データ同期には、サーバーレスリソースグループを使用することを推奨します。ネットワーク接続の確立方法の詳細については、「ネットワーク接続ソリューション」をご参照ください。
データソースの作成
DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、パラメーターの意味を理解するために DataWorks コンソールでパラメーターの説明を表示できます。
以下に、Amazon Redshift データソースのいくつかのパラメーターについて説明します。
[JDBC URL]: Java Database Connectivity (JDBC) 接続文字列を入力します。文字列には、IP アドレス、ポート番号、データベース、および接続パラメーターを含める必要があります。パブリック IP アドレスとプライベート IP アドレスの両方がサポートされています。パブリック IP アドレスを使用する場合は、Data Integration リソースグループが Amazon Redshift ホストにアクセスできることを確認してください。
[ユーザー名]: Amazon Redshift データベースのユーザー名を入力します。
[パスワード]: 指定されたユーザー名のパスワードを入力します。
データ同期タスクの開発
同期タスクの構成のエントリポイントと手順については、以下の構成ガイドをご参照ください。
単一テーブルのオフライン同期タスク構成ガイド
手順については、「コードレス UI での同期タスクの構成」および「コードエディタでの同期タスクの構成」をご参照ください。
パラメーターの完全なリストとコードエディタのスクリプト例については、「付録: スクリプトの例とパラメーターの説明」をご参照ください。
付録: スクリプトの例とパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合は、統一スクリプトフォーマット要件に基づいてスクリプト内の関連パラメーターを構成する必要があります。詳細については、「コードエディタでのタスクの構成」をご参照ください。以下に、コードエディタを使用してバッチ同期タスクを構成する際にデータソースに構成する必要があるパラメーターについて説明します。
リーダーのスクリプト例
{
"stepType": "redshift"
"parameter":
{
"datasource":"redshift_datasource",
"table": "redshift_table_name",
"where": "xxx=3",
"splitPk": "id",
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
]
},
"name": "Reader",
"category": "reader"
}リーダーのスクリプトパラメーター
スクリプトパラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。コードエディタでは、このパラメーターの値は追加するデータソースの名前と一致する必要があります。 | Yes | None |
table | ソーステーブルの名前。 | Yes | None |
column | 同期するフィールドのリスト。フィールドはコンマで区切ります。例: "column":["id","name","age"]。 すべての列を同期するには、アスタリスク (*) を使用します。例: "column":["*"]。 | Yes | None |
where | フィルター条件。指定された column、table、および where パラメーターから SQL 文が構築され、データが抽出されます。たとえば、テスト中に where 条件を limit 10 に設定できます。 典型的なビジネスシナリオでは、当日データを同期する場合があります。これを行うには、where 条件を gmt_create>$bizdate に設定します。
| No | None |
splitPk | splitPk を指定すると、システムは指定されたフィールドをデータパーティション分割に使用します。これにより、データ同期効率を向上させるために同時タスクが開始されます。 | No | None |
ライターのスクリプト例
{
"stepType": "redshift",// プラグイン名。
"parameter":
{
"postSql":["delete from XXX;"],
"preSql":["delete from XXX;"],
"datasource":"redshift_datasource",// データソース名。
"table": "redshift_table_name",// テーブル名。
"writeMode": "insert",
"batchSize": 2048,
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
]
},
"name": "Writer",
"category": "writer"
}ライターのスクリプトパラメーター
スクリプトパラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。コードエディタでは、このパラメーターの値は追加するデータソースの名前と一致する必要があります。 | Yes | None |
table | 宛先テーブルの名前。 | Yes | None |
column | データを書き込む宛先テーブルのフィールド。フィールドはコンマで区切ります。例: "column":["id","name","age"]。 すべての列に順番に書き込むには、アスタリスク (*) を使用します。例: "column":["*"]。 | Yes | None |
preSql | データ同期タスクが開始される前に実行する SQL 文。コードレス UI は 1 つの SQL 文のみをサポートします。コードエディタは、古いデータをパージする文など、複数の SQL 文をサポートします。 | No | None |
postSql | データ同期タスクが完了した後に実行する SQL 文。コードレス UI は 1 つの SQL 文のみをサポートします。コードエディタは、タイムスタンプを追加する文など、複数の SQL 文をサポートします。 | No | None |
batchSize | 各バッチでインポートするデータエントリの最大数。 | No | 2048 |
writeMode | insert のみがサポートされています。 | No | insert |