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

Data Transmission Service:宛先テーブルに列を追加する

最終更新日:Oct 22, 2024

Data Transmission Service (DTS) では、データ同期または移行タスクを作成するときに、ターゲットテーブルに列を追加したり、列に値を割り当てたりすることができます。 追加の列の値をフィルタリングして、宛先テーブルに送信されるデータに対して、メタデータの管理、並べ替え、重複排除などの操作を実行できます。 これにより、データの管理および処理が容易になる。

使用上の注意

  • 次のシナリオでは、追加の列を宛先テーブルに追加できます。

    • ターゲットデータベースのデータベースタイプは、DataHubLindormKafka、またはClickHouseです。

    • ソースデータベースのデータベースタイプDB2 for LUWまたはDB2 for iSeries (AS/400) で、ターゲットデータベースのデータベースタイプMySQLまたはPolarDB for MySQLです。

    • ソースデータベースのデータベースタイプMySQLMariaDB、またはPolarDB for MySQLで、ターゲットデータベースのデータベースタイプMySQLMariaDB、またはPolarDB for MySQLです。

    • ソースデータベースのデータベースタイプMySQL、ターゲットデータベースのデータベースタイプTair/RedisAnalyticDB for PostgreSQL、またはAnalyticDB for MySQL 3.0です。

    • ソースデータベースのデータベースタイプPolarDB for PostgreSQLで、ターゲットデータベースのデータベースタイプAnalyticDB for PostgreSQLです。

  • データ同期タスクで追加の列を宛先テーブルに追加する前に、追加の列の名前が宛先テーブルの既存の列の名前と異なることを確認してください。

  • データ同期タスクのソースデータベースがMongoDBデータベースの場合、ターゲットデータベース内の既存のコレクションに _idおよび _valueフィールドを含めることはできません。 それ以外の場合、データ同期タスクは失敗します。

  • データ同期または移行タスクを作成するときに、選択中のオブジェクト セクションでデータベースを右クリックして列を追加すると、DTSは、対応するターゲットデータベースのすべてのテーブルに指定された追加の列を追加します。

手順

この例では、データ同期タスクの宛先テーブルに列を追加する方法を示します。

  1. [データ同期タスク] ページに移動します。

    1. にログインします。 データ管理 (DMS) コンソール

    2. 上部のナビゲーションバーで、DTS.

    3. 左側のナビゲーションウィンドウで、DTS (DTS) > データ同期.

    説明
  2. の右側にデータ同期タスク、データ同期インスタンスが存在するリージョンを選択します。

    説明

    新しいDTSコンソールを使用する場合は、上部のナビゲーションバーでデータ同期インスタンスが存在するリージョンを選択する必要があります。

  3. [タスクの作成] をクリックします。 [データ同期タスクの作成] ページで、ビジネス要件に基づいてソースデータベースとターゲットデータベースを設定します。

    説明

    [実行中] 状態のデータ同期タスクの宛先テーブルに列を追加する場合は、タスクの [操作] 列で [オブジェクトの再選択] をクリックします。

  4. オブジェクト設定 ステップに進み、設定を完了します。

    このステップでは、列を追加できます。

    1. ソースオブジェクト セクションで、同期するオブジェクトとしてデータベースまたはテーブルを選択し、image.pngアイコンをクリックしてオブジェクトを 選択中のオブジェクト セクションに移動します。

    2. 選択中のオブジェクト セクションで、同期するデータベースまたはテーブルを右クリックします。

    3. 表示されるダイアログボックスの 追加の列 セクションで、[+ 列の追加] をクリックします。

    4. [列名][タイプ] 、および [値の割り当て] パラメーターを設定します。

      説明

      [値の割り当て] フィールドの右側にある...アイコンをクリックすると、追加列に値を割り当てるための式をカスタマイズできます。 詳細については、このトピックの「値の割り当てパラメーターの設定」をご参照ください。

    5. [OK] をクリックします。

  5. プロンプトに従って後続の手順を実行し、データ同期タスクの設定を完了します。

    説明

    データ同期タスクで抽出、変換、および読み込み (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)