翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
変換ルール式を使用した列の内容の定義
新しい列と既存の列の内容を定義するには、変換ルール内で式を使用します。たとえば、式を使用すると、列を追加したり、ソーステーブルヘッダーをターゲットにレプリケートしたりできます。また、式を使用して、ターゲットテーブルのレコードに、ソースで挿入済み、更新済み、または削除済みというフラグを付けることもできます。
トピック
式を使用した列の追加
変換ルールの式を使用してテーブルに列を追加するには、add-column
ルールアクションと column
ルールターゲットを使用します。
次の使用例は、ITEM
テーブルに新しい列を追加します。新しい列名が FULL_NAME
に設定されます。データ型は string
、長さは 50 文字です。式は、2 つの既存の列の値 FIRST_NAME
および LAST_NAME
を連結して FULL_NAME
を評価します。schema-name
および table-name
、式パラメータは、ソース データベーステーブル内のオブジェクトを参照します。Value
と data-type
ブロックは、ターゲット データベーステーブル内のオブジェクトを参照します。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "Test", "table-name": "ITEM" }, "value": "FULL_NAME", "expression": "$FIRST_NAME||'_'||$LAST_NAME", "data-type": { "type": "string", "length": 50 } } ] }
式を使用したターゲットレコードのフラグ付け
ターゲットテーブルのレコードにソーステーブルで挿入済み、更新済み、または削除済みというフラグを付けるには、変換ルールで式を使用します。式は、operation_indicator
関数を使用してレコードにフラグを付けます。ソースから削除されたレコードは、ターゲットから削除されません。代わりに、ターゲットレコードには、ソースから削除されたことを示すユーザー指定の値でフラグが付けられます。
注記
operation_indicator
関数は、ソースデータベースとターゲットデータベースの両方にプライマリキーがあるテーブルでのみ機能します。
たとえば、次の変換ルールは、まずターゲットテーブルに新しい Operation
列を追加します。次に、ソーステーブルからレコードが削除されるたびに、値 D
で列を更新します。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "Operation", "expression": "operation_indicator('D', 'U', 'I')", "data-type": { "type": "string", "length": 50 } }
式を使用したソーステーブルヘッダーのレプリケート
デフォルトでは、ソーステーブルのヘッダーはターゲットにレプリケートされません。レプリケートするヘッダーを指定するには、テーブルの列ヘッダーを含む式を含む変換ルールを使用します。
式では、次の列ヘッダーを使用できます。
[Header] (ヘッダー) | 継続的なレプリケーションの値 | 全ロードの値 | データ型 |
---|---|---|---|
AR_H_STREAM_POSITION | ソースからのストリーム位置の値。この値は、ソースエンドポイントに応じて、システム変更番号 (SCN) またはログシーケンス番号 (LSN) になります。 | 空の文字列。 | STRING |
AR_H_TIMESTAMP | 変更の時刻を示すタイムスタンプ。 | 現在のデータがターゲットに到着した時刻を示すタイムスタンプ。 | DATETIME (スケール=7) |
AR_H_COMMIT_TIMESTAMP | コミットの時刻を示すタイムスタンプ。 | 現在の時刻を示すタイムスタンプ。 | DATETIME (スケール=7) |
AR_H_OPERATION | INSERT、UPDATE、または DELETE | INSERT | STRING |
AR_H_USER | 変更を行ったユーザーについて、ソースから提供されるユーザー名、ID、またはその他の情報。 このヘッダーは、SQL Server および Oracle (バージョン 11.2.0.3 以上) のソースエンドポイントでのみサポートされます。 |
オブジェクトに適用する変換。変換ルールアクションでは、大文字と小文字が区別されます。 | STRING |
H_H_CHANGE_SEQ | タイムスタンプと自動インクリメント番号で構成される、ソース データベースの一意のインクリメント番号。値は、ソース データベースシステムによって異なります。 | 空の文字列。 | STRING |
次の例では、ソースからのストリーム位置の値を使用して、ターゲットに新しい列を追加します。SQL サーバー の場合、ストリーム位置の値は、ソース エンドポイントの SCN です。Oracle の場合、ストリーム位置の値はソースエンドポイントの LSN です。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_STREAM_POSITION", "data-type": { "type": "string", "length": 50 } }
次の使用例は、ソースから一意の増分番号を持つ新しい列をターゲットに追加します。この値は、タスクレベルでの 35 桁の一意の数字を表します。最初の 16 桁はタイムスタンプの一部であり、最後の 19 桁は DBMS によって増分された record_id 番号です。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_CHANGE_SEQ", "data-type": { "type": "string", "length": 50 } }
SQLite 関数を使用して式を構築する
テーブル設定を使用して、指定されたオペレーションで選択されたテーブルまたはビューに適用する設定を指定します。テーブル設定ルールはオプションです。
注記
MongoDB と DocumentDB データベースでは、テーブルやビューという概念の代わりに、コレクションにまとめられたドキュメントとしてデータレコード保存します。そのため、MongoDB ソースまたは DocumentDB ソースから移行する場合は、テーブルやビューではなく、選択したコレクションに対する並列ロード設定の範囲セグメンテーションタイプを考慮します。
変換ルール式を作成するために使用できる文字列関数を以下に示します。
文字列関数 | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
trim( |
|
変換ルール式の作成に使用できる LOB 関数を以下に示します。
LOB 関数 | 説明 |
---|---|
|
|
|
|
|
|
変換ルール式の作成に使用できる数値関数を以下に示します。
数値関数 | 説明 |
---|---|
|
|
|
|
|
|
|
複数引数
|
|
複数 引数
|
変換ルール式を作成するために使用できる NULL チェック関数を以下に示します。
NULL チェック関数 | 説明 |
---|---|
|
|
|
|
|
|
変換ルール式を作成するために使用できる日付と時刻関数を以下に示します。
日付および時刻関数 | 説明 |
---|---|
|
|
|
|
|
|
|
|
|
|
変換ルール式を作成するために使用できるハッシュ関数を以下に示します。
ハッシュ関数 | 説明 |
---|---|
|
式内の |
CASE 式の使用
SQLite CASE
式は、条件のリストを評価し、結果に基づいて式を返します。構文を以下に示します。
CASE case_expression WHEN when_expression_1 THEN result_1 WHEN when_expression_2 THEN result_2 ... [ ELSE result_else ] END # Or CASE WHEN case_expression THEN result_1 WHEN case_expression THEN result_2 ... [ ELSE result_else ] END
例
例 ケース条件を使用してターゲット テーブルに新しい文字列列を追加する
例えば、次の変換ルールは、まずターゲットテーブル employee
に新しい emp_seniority
列を追加します。給与列に SQLite round
関数を使って、給与が 20,000 に等しいか超えるかをチェックするケース条件を指定します。そうであれば、列は値 SENIOR
を取得し、それ以外は何でもその値が JUNIOR
となります。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "emp_seniority", "expression": " CASE WHEN round($emp_salary)>=20000 THEN ‘SENIOR’ ELSE ‘JUNIOR’ END", "data-type": { "type": "string", "length": 50 } }
例 ターゲット テーブルに新しい日付列を追加する
次の使用例は、ターゲット テーブル,createdate
, に新しい日付列を追加します employee
。SQLite の日付関数 datetime
を使用する場合、挿入された各行について、新しく作成されたテーブルに日付が追加されます。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "createdate", "expression": "datetime ()", "data-type": { "type": "datetime", "precision": 6 } }
例 ターゲット テーブルに新しい数値列を追加する
次の使用例は、ターゲット テーブル rounded_emp_salary
に新しい列 employee
を追加します。SQLite round
関数を使って四捨五入された給与を追加します。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "rounded_emp_salary", "expression": "round($emp_salary)", "data-type": { "type": "int8" } }
例 ハッシュ関数を使用してターゲット テーブルに新しい文字列カラムを追加する
次の使用例は、ターゲット テーブル employee
に新しい列 hashed_emp_number
を追加します。SQLite hash_sha256(
関数は、ソース列 x
)emp_number
のターゲットにハッシュ値を作成します。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "hashed_emp_number", "expression": "hash_sha256($emp_number)", "data-type": { "type": "string", "length": 64 } }
式を使用したターゲット テーブルへのメタデータ追加
次の式を使用して、メタデータ情報をターゲット テーブルに追加できます:
-
$AR_M_SOURCE_SCHEMA
– ソーススキーマの名前。 -
$AR_M_SOURCE_TABLE_NAME
– ソーステーブルの名前。 -
$AR_M_SOURCE_COLUMN_NAME
– ソーステーブルの列の名前。 -
$AR_M_SOURCE_COLUMN_DATATYPE
– ソーステーブルの列のデータ型。
例 ソースのスキーマ名を使用してスキーマ名の列を追加する
次の例では、ソースからのスキーマ名を使用して、ターゲットに新しい列 schema_name
を追加します。
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value":"schema_name", "expression": "$AR_M_SOURCE_SCHEMA", "data-type": { "type": "string", "length": 50 } }