Data Transmission Service (DTS) では、データ同期または移行タスクを作成するときに、ターゲットテーブルに列を追加したり、列に値を割り当てたりすることができます。 追加の列の値をフィルタリングして、宛先テーブルに送信されるデータに対して、メタデータの管理、並べ替え、重複排除などの操作を実行できます。 これにより、データの管理および処理が容易になる。
使用上の注意
次のシナリオでは、追加の列を宛先テーブルに追加できます。
ターゲットデータベースのデータベースタイプは、DataHub、Lindorm、Kafka、またはClickHouseです。
ソースデータベースのデータベースタイプはDB2 for LUWまたはDB2 for iSeries (AS/400) で、ターゲットデータベースのデータベースタイプはMySQLまたはPolarDB for MySQLです。
ソースデータベースのデータベースタイプはMySQL、MariaDB、またはPolarDB for MySQLで、ターゲットデータベースのデータベースタイプはMySQL、MariaDB、またはPolarDB for MySQLです。
ソースデータベースのデータベースタイプはMySQL、ターゲットデータベースのデータベースタイプはTair/Redis、AnalyticDB for PostgreSQL、またはAnalyticDB for MySQL 3.0です。
ソースデータベースのデータベースタイプはPolarDB for PostgreSQLで、ターゲットデータベースのデータベースタイプはAnalyticDB for PostgreSQLです。
データ同期タスクで追加の列を宛先テーブルに追加する前に、追加の列の名前が宛先テーブルの既存の列の名前と異なることを確認してください。
データ同期タスクのソースデータベースがMongoDBデータベースの場合、ターゲットデータベース内の既存のコレクションに _idおよび _valueフィールドを含めることはできません。 それ以外の場合、データ同期タスクは失敗します。
データ同期または移行タスクを作成するときに、選択中のオブジェクト セクションでデータベースを右クリックして列を追加すると、DTSは、対応するターゲットデータベースのすべてのテーブルに指定された追加の列を追加します。
手順
この例では、データ同期タスクの宛先テーブルに列を追加する方法を示します。
[データ同期タスク] ページに移動します。
にログインします。 データ管理 (DMS) コンソール
上部のナビゲーションバーで、DTS.
左側のナビゲーションウィンドウで、 .
説明操作は、DMSコンソールのモードとレイアウトによって異なります。 詳細については、「シンプルモード」および「DMSコンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
に行くこともできます 新しいDTSコンソールのデータ同期タスクページ。
の右側にデータ同期タスク、データ同期インスタンスが存在するリージョンを選択します。
説明新しいDTSコンソールを使用する場合は、上部のナビゲーションバーでデータ同期インスタンスが存在するリージョンを選択する必要があります。
[タスクの作成] をクリックします。 [データ同期タスクの作成] ページで、ビジネス要件に基づいてソースデータベースとターゲットデータベースを設定します。
説明[実行中] 状態のデータ同期タスクの宛先テーブルに列を追加する場合は、タスクの [操作] 列で [オブジェクトの再選択] をクリックします。
オブジェクト設定 ステップに進み、設定を完了します。
このステップでは、列を追加できます。
ソースオブジェクト セクションで、同期するオブジェクトとしてデータベースまたはテーブルを選択し、アイコンをクリックしてオブジェクトを 選択中のオブジェクト セクションに移動します。
選択中のオブジェクト セクションで、同期するデータベースまたはテーブルを右クリックします。
表示されるダイアログボックスの 追加の列 セクションで、[+ 列の追加] をクリックします。
[列名] 、[タイプ] 、および [値の割り当て] パラメーターを設定します。
説明[値の割り当て] フィールドの右側にあるアイコンをクリックすると、追加列に値を割り当てるための式をカスタマイズできます。 詳細については、このトピックの「値の割り当てパラメーターの設定」をご参照ください。
[OK] をクリックします。
プロンプトに従って後続の手順を実行し、データ同期タスクの設定を完了します。
説明データ同期タスクで抽出、変換、および読み込み (ETL) 機能が有効になっている場合、DTSはAssign valueパラメーターに基づいて追加の各列の値を計算し、データ同期タスクでETLスクリプトを実行して最終値を計算し、最終値を同期先データベースに同期します。
Assign Valueパラメーターの設定
追加の列のAssign valueパラメーターの値は、定数、変数、演算子、および式関数で構成されます。
パラメーター設定は、ETLのドメイン固有言語 (DSL) 構文と互換性があります。
式では、列名は単一引用符 ('') ではなく逆引用符 ('') で囲まれます。
定数
データ型
例
int
123
float
123.4
String
"hello1_world"
Boolean
true または false
datetime
日付 ('2021-01-01 10:10:01 ')
変数
変数
説明
データ型
例
__TB__
データベース内のテーブルの名前。
String
table
__DB__
データベースの名前。
String
mydb
__操作__
操作のタイプ。
String
__OP_INSERT __,__ OP_UPDATE __,__ OP_DELETE_
__COMMIT_TIMESTAMP__
トランザクションがコミットされた時刻。
datetime
'2021-01-01 10:10:01'
「列」
列の名前。
String
'id' または 'name'
__SCN__
システム変更番号 (SCN) 。 この変数は、データベースでコミットされたトランザクションのバージョンと、トランザクションがコミットされた時刻を記録するために使用されます。 各SCNは一意である。
String
22509 ****
__ROW_ID__
データレコードのアドレスID。 この変数は、データレコードを見つけるために使用され、一意です。
String
AAAgWHAAKAAJgX ****
式関数
算術演算
目的
構文
有効値
戻り値
例
追加 (+)
op_sum(value1, value2)
value1 + value2
value1: 整数または浮動小数点数。
value2: 整数または浮動小数点数。
value1とvalue2が整数の場合、整数が返されます。 そうでなければ、浮動小数点数が返される。
op_sum('col1', 1.0)
'col1' + 1.0
減算 (-)
op_sub(value1, value2)
value1-value2
value1: 整数または浮動小数点数。
value2: 整数または浮動小数点数。
value1とvalue2が整数の場合、整数が返されます。 そうでなければ、浮動小数点数が返される。
op_sub('col1' 、1.0)
'col1'-1.0
乗算 (*)
op_mul(value1, value2)
value1 * value2
value1: 整数または浮動小数点数。
value2: 整数または浮動小数点数。
value1とvalue2が整数の場合、整数が返されます。 そうでなければ、浮動小数点数が返される。
op_mul('col1', 1.0)
'col1' * 1.0
ディビジョン (/)
op_div_true(value1, value2)
value1/value2
value1: 整数または浮動小数点数。
value2: 整数または浮動小数点数。
value1とvalue2が整数の場合、整数が返されます。 そうでなければ、浮動小数点数が返される。
op_div_true('col1', 2.0) 。 この例では、col1の値が15の場合、7.5が返されます。
'col1'/1.0
Modulo
op_mod(value1, value2)
value1: 整数または浮動小数点数。
value2: 整数または浮動小数点数。
value1とvalue2が整数の場合、整数が返されます。 そうでなければ、浮動小数点数が返される。
op_mod('col1', 10) 。 この例では、col1の値が23の場合、3が返されます。
論理操作
API 操作
構文
有効値
戻り値
例
等しい
op_eq(value1, value2)
value1: 整数、浮動小数点数、または文字列。
value2: 整数、浮動小数点数、または文字列。
true または false
op_eq('col1', 23)
超
op_gt(value1, value2)
value1: 整数、浮動小数点数、または文字列。
value2: 整数、浮動小数点数、または文字列。
true または false
op_gt('col1' 、1.0)
未満
op_lt(value1, value2)
value1: 整数、浮動小数点数、または文字列。
value2: 整数、浮動小数点数、または文字列。
true または false
op_lt('col1', 1.0)
以上
op_ge(value1, value2)
value1: 整数、浮動小数点数、または文字列。
value2: 整数、浮動小数点数、または文字列。
true または false
op_ge('col1' 、1.0)
以下
op_le(value1, value2)
value1: 整数、浮動小数点数、または文字列。
value2: 整数、浮動小数点数、または文字列。
true または false
op_le('col1' 、1.0)
AND
op_and(value1, value2)
value1: ブール値。
value2: ブール値。
true または false
op_and('is_male' 、'is_student ')
OR
op_or(value1, value2)
value1: ブール値。
value2: ブール値。
true または false
op_or('is_male' 、'is_student ')
IN
op_in (値, json_array)
value: 任意の値。
json_array: JSON文字列。
true または false
op_in('id',json_array('["0","1","2","3","4","5","6","7","8"]')))
値が空かどうかを判断する
op_is_null (値)
value: 任意の値。
true または false
op_is_null('name')
値が空でないかどうかを判断する
op_is_not_null (値)
value: 任意の値。
true または false
op_is_not_null('name')
文字列関数
API 操作
構文
有効値
戻り値
例
文字列の追加
op_add(str_1、str_2、... 、str_n)
str_1: 文字列。
str_2: 文字列。
...
str_n: 文字列。
追加操作の後の文字列。
op_add('col' 、'hangzhou' 、'dts)
文字列と追加文字列のフォーマット
str_format(format, value1, value2, value3, ...)
format: 文字列。 ブレース ({}) はプレースホルダーとして使用されます。 例: "part1: {}, part2: {}"
value1: 任意の値。
value2: 任意の値。
フォーマット操作の後の文字列。
str_format("part1: {}, part2: {}", 'col1', 'col2') 。 この例では、col1の値がabで、col2の値が12の場合、"part1: ab, part2: 12" が返されます。
文字列の置き換え
str_replace (オリジナル, oldStr, newStr, count)
original: 元の文字列。
oldStr: 置き換えられる文字列。
newStr: 置き換え後の文字列。
count: 文字列を置き換えることができる最大回数を示す整数。 − 1の値は、すべてのoldStrがnewStrに置き換えられることを示す。
置換操作後の文字列。
例1: str_replace('name', "a", 'b', 1) 。 この例では、名前がabaの場合、bbaが返されます。 例2: str_replace('name', "a", 'b', -1) 。 この例では、名前がabaの場合、bbbが返されます。
VARCHAR、TEXT、CHAR型など、すべての文字列型のフィールドの値の文字列を置き換えます。
tail_replace_string_field(search, replace, all)
search: 置き換えられる文字列。
replace: 置換後の文字列。
all: 一致するすべての文字列を置き換えるかどうかを示します。 trueの値のみがサポートされています。
説明一致するすべての文字列を置き換える必要がない場合は、
str_replace()
関数を使用します。
置換操作後の文字列。
tail_replace_string_field('\u000f','',true) 。 この例では、文字列型のフィールド値のすべての "\u000f" 文字列がスペースに置き換えられます。
文字列の先頭と末尾の特定の文字を削除する
str_strip(string_val, charSet)
string_val: 元の文字列。
char_set: 文字列の最初の文字と最後の文字のセット。
remove操作の後の文字列。
str_strip('name', 'ab') 。 この例では、名前がaxbzbの場合、xbzが返されます。
文字列を小文字に変換する
str_lower (値)
value: 文字列型または文字列定数の列。
変換操作後の文字列。
str_lower('str_col')
文字列を大文字に変換する
str_upper (値)
value: 文字列型または文字列定数の列。
変換操作後の文字列。
str_upper('str_col')
文字列を数値に変換する
cast_string_to_long (値)
value: 文字列。
変換操作後の整数。
cast_string_to_long('col')
数値を文字列に変換する
cast_long_to_string (値)
value: 整数。
変換操作後の文字列。
cast_long_to_string('col')
文字列を数える
str_count(str,pattern)
str: 文字列型または文字列定数の列。
pattern: クエリする部分文字列。
部分文字列が表示される回数。
str_count('str_col', 'abc') 。 この例では、str_colの値がzabcyabczの場合、2が返されます。
クエリ文字列
str_find(str, pattern)
str: 文字列型または文字列定数の列。
pattern: クエリする部分文字列。
部分文字列が初めて一致する位置。 一致するものが見つからない場合、-1が返されます。
str_find('str_col', 'abc') 。 この例では、str_colの値がxabcyの場合、1が返されます。
文字列に文字のみが含まれるかどうかを判断する
str_isalpha(str)
str: 文字列型または文字列定数の列。
true または false
str_isalpha('str_col')
文字列に数字のみが含まれるかどうかを判断する
str_isdigit(str)
str: 文字列型または文字列定数の列。
true または false
str_isdigit('str_col')
正規表現マッチ
regex_match(str,regex)
str: 文字列型または文字列定数の列。
regex: 正規表現。
true または false
regex_match(__TB __, 'user _\\ d + ')
文字列の一部を特定の文字でマスクします。 この操作は、データマスキングに使用することができる。 たとえば、携帯電話番号の最後の4桁を4つのアスタリスク (*) でマスクします。
str_mask(str, start, end, maskStr)
str: 文字列型または文字列定数の列。
start: マスキングの開始位置を示す整数。 最小値は0です。
end: マスキングの終了位置を示す整数。 最大値は、文字列の長さから1を引いた値です。
maskStr: 文字列。 長さは1である。 例: #.
先頭から末尾までの部分が指定された文字でマスクされている文字列。
str_mask('phone', 7,10, '#')
文字列をcond文字列から最後の文字に切り捨てる
substring_after(str, cond)
str: 元の文字列。
cond: 文字列。
truncate操作の後の文字列。
説明戻り値にはcond文字列が含まれていません。
substring_after('col', 'abc')
最初の文字からcond文字列への文字列の切り捨て
substring_before(str, cond)
str: 元の文字列。
cond: 文字列。
truncate操作の後の文字列。
説明戻り値にはcond文字列が含まれていません。
substring_before('col' 、'efg')
cond1文字列からcond2文字列への文字列の切り捨て
substring_between(str, cond1, cond2)
str: 元の文字列。
cond1: 文字列。
cond2: 文字列。
truncate操作の後の文字列。
説明戻り値にはcond1文字列とcond2文字列は含まれません。
substring_between('col' 、'abc' 、'efg')
値が文字列型であるかどうかを判断する
is_string_value(value)
value: 文字列または列名。
true または false
is_string_value('col1')
文字列型のフィールド値の文字列を置き換えます。 置き換えは、フィールド値の最後から開始されます。
tail_replace_string_field(search, replace, all)
search: 置き換えられる文字列。
replace: 置換後の文字列。
all: 一致するすべての文字列を置き換えるかどうかを示します。 有効な値は、true および false です。
置換操作後の文字列。
次の例では、文字列型のフィールド値のすべての "\u000f" 文字列がスペースに置き換えられています。
tail_replace_string_field('\u000f','',true)
MongoDBドキュメント内のフィールドの値を照会する
bson_value("field1" 、"field2" 、"field3" 、...)
field1: レベル1フィールドの名前。
field2: レベル2フィールドの名前。
ドキュメント内の対応するフィールドの値。
e_set('user_id' 、bson_value("id"))
e_set('user_name', bson_value("person","name"))
条件式
API 操作
構文
有効値
戻り値
例
条件の結果に基づいて値を返します。 この式は三元演算子 (
?) :
) をC言語で指定します。(cond?) val_1 : val_2)
cond: 値がブール値であるフィールドまたは式。
val_1: 戻り値1。
val_2: 戻り値2。
説明val_1とval_2の値は同じデータ型である必要があります。
condの値がtrueの場合、val_1が返されます。 それ以外の場合、val_2が返されます。
(id>1000? 1 : 0)
時間関数
API 操作
構文
有効値
戻り値
例
現在の時刻を照会する
dt_now()
非該当
DATETIMEデータ型の値で、秒単位の精度があります。
dts_now()
dt_now_millis()
非該当
DATETIMEデータ型の正確なミリ秒単位の値。
dt_now_millis()
秒単位のUTCタイムスタンプをDATETIME値に変換する
dt_fromtimestamp(value,[timezone])
value: 整数。
timezone: タイムゾーン。 このパラメーターはオプションです。
DATETIMEデータ型の値で、秒単位の精度があります。
dt_fromtimestamp(1626837629)
dt_fromtimestamp(1626837629、'GMT + 08 ')
UTCタイムスタンプ (ミリ秒) をDATETIME値に変換する
dt_fromtimestamp_millis(value,[timezone])
value: 整数。
timezone: タイムゾーン。 このパラメーターはオプションです。
DATETIMEデータ型の正確なミリ秒単位の値。
dt_fromtimestamp_millis(1626837629123);
dt_fromtimestamp_millis(1626837629123、'GMT 08 ')
DATETIME値をUTCタイムスタンプに秒単位で変換する
dt_parsetimestamp(value,[timezone])
value: DATETIMEデータ型の値。
timezone: タイムゾーン。 このパラメーターはオプションです。
変換操作後の整数。
dt_parsetimestamp('datetime_col')
dt_parsetimestamp('datetime_col' 、'GMT + 08 ')
DATETIME値をUTCタイムスタンプに変換する (ミリ秒単位)
dt_parsetimestamp_millis(value,[timezone])
value: DATETIMEデータ型の値。
timezone: タイムゾーン。 このパラメーターはオプションです。
変換操作後の整数。
dt_parsetimestamp_millis('datetime_col')
dt_parsetimestamp_millis('datetime_col' 、'GMT 08 ')
DATETIME値を文字列に変換する
dt_str (値、形式)
value: DATETIMEデータ型の値。
format: 時間形式を示す文字列。 例: yyyy-MM-dd HH:mm:ss。
変換操作後の文字列。
dt_str('col1', 'yyyy-MM-dd HH:mm:ss')
文字列をDATETIME値に変換する
dt_strptime (値、形式)
value: 文字列。
format: 時間形式を示す文字列。 例: yyyy-MM-dd HH:mm:ss。
変換操作後のDATETIME値。
dt_strptime('2021-07-21 03:20:29 ', 'yyyy-MM-dd hh:mm:ss')
年、月、日、時間、分、秒などの1つ以上の時間粒度の値を増減することによって時間を変更します。
dt_add(value, [years=intVal],
[months=intVal] 、
[days=intVal] 、
[hours=intVal] 、
[minutes=intVal]
)
value: DATETIMEデータ型の値。
intVal: 整数。
説明マイナス記号 (-) は、指定された時間粒度の値が減少したことを示します。
変更操作後のDATETIME値。
dt_add(datetime_col,years=-1)
dt_add(datetime_col,years=1,months=1)