更新时间:2024-05-27 GMT+08:00

数据过滤规则校验

功能介绍

数据过滤规则校验。

URI

POST /v5/{project_id}/job/{job_id}/data-filtering/check

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户在某一Region下的Project ID。

获取方法请参见获取项目ID

job_id

String

任务ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。

缺省值:application/json

X-Auth-Token

String

从IAM服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

X-Language

String

请求语言类型。

缺省值:en-us

枚举值:

  • en-us
  • zh-cn
表3 请求Body参数

参数

是否必选

参数类型

描述

data_process_info

Array of objects

指定任务数据加工规则请求体。

详情请参见表4

表4 data_process_info字段数据结构说明

参数

是否必选

参数类型

描述

filter_conditions

Array of objects

指定任务数据加工规则请求体。

详情请参见表5

is_batch_process

Boolean

库级、批量表级处理为true,单表操作为false。

add_columns

Array of objects

附加列,当选择附加列时必须填写。

说明:

使用多对一操作时,需要使用数据加工的附加列操作来避免数据冲突。

详情请参见表6

ddl_operation

Map<String,String>

支持DDL的语法,选择增量迁移或同步的DDL操作。取值及含义如下:

"table": "CREATE TABLE, ALTER TABLE,DROP TABLE,RENAME TABLE"

如该值为空,不迁移或同步DDL操作。

dml_operation

String

支持DML的语法 选择DML操作时,取值如下:

  • i:INSERT。
  • u:UPDATE
  • d:DELETE。

如该值为空,不增量迁移或同步DML操作。

db_object_column_info

Object

列映射、过滤信息 当进行列映射、过滤信息时必须填写。

详情请参见表7

db_or_table_rename_rule

Object

库表映射规则。

详情请参见表9

db_object

Object

数据加工对象信息 当做过映射、进行数据过滤条件校验时,必须填写。

详情请参见表10

is_synchronized

Boolean

表示该规则是否已同步至目标库。

source

String

对比的来源。

  • job:表示数据同步时的过滤。
  • compare:表示数据对比的过滤。

枚举值:

  • job
  • compare
表5 filter_conditions字段数据结构说明

参数

是否必选

参数类型

描述

value

String

过滤条件。当filtering_type是configConditionalFilter时,value默认填写config。当filtering_type是contentConditionalFilter时,value默认填写过滤条件。

说明:
  • 每张表仅支持添加一个校验规则。
  • 数据过滤每次最多支持500张表。
  • 过滤表达式不支持使用某种数据库引擎特有的package、函数、变量、常量等写法,须使用通用SQL标准。请直接输入SQL语句中WHERE之后的部分(不包含WHERE和分号,例如:sid > 3 and sname like "G %"),最多支持输入512个字符。
  • 过滤条件填写的SQL语句中,关键字需要用反引号,datatime类型(包含日期和时间)需要用单引号,例如:update > '2022-07-13 00:00:00' and age >10。
  • 不支持对LOB字段设置过滤条件,如CLOB、BLOB、BYTEA等大字段类型。
  • 不支持库名、表名带有换行符的对象设置过滤规则。
  • 建议不要对非精确类型字段设置过滤条件,如FLOAT、DECIMAL、DOUBLE等。
  • 建议不要对带有特殊字符的字段设置过滤条件。
  • 不建议使用非幂等表达式或函数作为数据加工条件,如SYSTIMESTAMP,SYSDATE等,因其每次调用返回的结果可能会有差异,导致达不到预期。

filtering_type

String

过滤条件类型

  • contentConditionalFilter:简单条件过滤。
  • configConditionalFilter:关联表过滤。

枚举值:

  • contentConditionalFilter
  • configConditionalFilter
表6 add_columns字段数据结构说明

参数

是否必选

参数类型

描述

column_type

String

列类型。

column_name

String

列名称。

column_value

String

列填充值。

data_type

String

填充列的数据类型。

表7 db_object_column_info字段数据结构说明

参数

是否必选

参数类型

描述

db_name

String

数据库库名称。

schema_name

String

数据库schema名称。

table_name

String

数据库表名称。

column_infos

Array of objects

数据库列信息。

详情请参见表8

total_count

Integer

数据库列信息总数,与分页无关,仅作为返回体参数

表8 column_infos字段数据结构说明

参数

是否必选

参数类型

描述

column_name

String

列名。

column_type

String

列类型。

primary_key_or_unique_index

String

主键或者唯一索引。

column_mapped_name

String

列映射后的名称。

is_filtered

Boolean

该列是否过滤。

is_partition_key

Boolean

该列是否partitionKey。

表9 db_or_table_rename_rule字段数据结构说明

参数

是否必选

参数类型

描述

prefix_name

String

前缀名称。当type为prefixAndSuffix,填写prefix_name,库表名称仅增加前缀,如果同时也填写suffix_name,库表名称增加前后缀。

suffix_name

String

后缀名称。当type为prefixAndSuffix,填写suffix_name,库表名称仅增加后缀,如果同时也填写prefix_name,库表名称同时增加前后缀。

type

String

库表映射类型。prefixAndSuffix:前缀、后缀或者前后缀。

枚举值:

  • prefixAndSuffix
  • manyToOne
表10 db_object字段数据结构说明

参数

是否必选

参数类型

描述

object_scope

String

数据库对象迁移或同步范围。取值:

  • all:全部迁移。
  • database:库级迁移或同步。
  • table:表级迁移或同步。

枚举值:

  • all
  • database
  • table

target_root_db

Object

数据库对象迁移或同步目标库,两层到三层数据库同步需要填写。

详情请参见表11

object_info

Map<String,DatabaseObject>

数据库对象迁移或同步信息,object_scope为all时不填,为库级或表级时必填。

详情请参见表12

表11 target_root_db字段数据结构说明

参数

是否必选

参数类型

描述

db_name

String

库名。

db_encoding

String

默认编码格式是utf8。

表12 object_info字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该数据库在实时同步场景下的类型。取值:

config:仅当该库作为数据过滤高级设置的关联库时,需要填写,此时该库以及该库下的schemas、tables“不会”被同步到目标库,name、all属性不生效,schemas、tables需要填写被关联的相关对象。

说明:

如果需要同步该库级对象,则在下级对象中填写sync_type值为config。

枚举值:

  • config

name

String

该数据库在目标库的名称(库名映射)。

all

Boolean

是否整库迁移或同步。

说明:
  • 当该库下的模式、表、列需要做数据过滤、列过滤、列映射时,填false,否则填true。
  • 当该库下的表需要做附加列时,需要填true,并且在表级对象的columns里填写附加列信息。
  • 当该库下的表所包含的列作为数据过滤高级设置的关联列时,需要填true,并且在columns里填写关联列信息,在config_conditions填写数据过滤高级设置的配置条件。

schemas

Map<String,SchemaObject>

需要迁移或同步的模式,当整库迁移或同步为false时需要填写。

详情请参见表13

tables

Map<String,TableObject>

需要迁移或同步的表,当整库迁移或同步为false时需要填写。

详情请参见表14

total_table_num

Integer

库下的表的数量,表的数量超过阈值就不显示。

is_synchronized

Boolean

是否已同步。

表13 schemas字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该模式在实时同步场景下的类型。取值:

config:仅当该模式作为数据过滤高级设置的关联模式时,需要填写,此时该模式以及该模式下的tables“不会”被同步到目标库,name、all属性不生效,tables需要填写被关联的相关对象。

说明:

如果需要同步该模式对象,则在下级对象中填写sync_type值为config。

name

String

该模式在目标库的名称(模式名映射)。

all

Boolean

是否整模式迁移或同步。

说明:
  • 当该模式下的表、列需要做数据过滤、列过滤、列映射时,填false,否则填true。
  • 当该模式下的表需要做附加列时,需要填true,并且在表级对象的columns里填写附加列信息。
  • 当该模式下的表所包含的列作为数据过滤高级设置的关联列时,需要填true,并且在columns里填写关联列信息、config_conditions填写数据过滤高级设置的配置条件。

tables

Map<String,TableObject>

需要迁移或同步的表,当整模式迁移或同步为false时需要填写。

详情请参见表14

表14 tables字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该表在实时同步场景下的类型。取值:

config:仅当该表作为数据过滤高级设置的关联表时,需要填写,此时该表以及该表下的columns“不会”被同步到目标库,name、all、filtered、filter_conditions属性不生效,columns需要填写被关联的相关对象,config_conditions需要填写数据过滤高级设置的配置条件。

说明:

如果需要同步该模式对象,则在下级对象中填写sync_type值为config。

type

String

对象类型。取值:

  • table:表。
  • view:视图。
  • procedure:存储过程。

枚举值:

  • table
  • view
  • procedure

name

String

该表在目标库的名称(表名映射)。

all

Boolean

是否整表迁移或同步。

说明:
  • 当该表不需要做列过滤、列映射时,填true;如果需要做列过滤、列映射则填false。
  • 当该表需要做附加列时,需要填true,并且在columns里填写附加列信息。
  • 当该表所包含的列作为数据过滤高级设置的关联列时,需要填true,并且在columns里填写关联列信息、config_conditions填写数据过滤高级设置的配置条件。

db_alias_name

String

一对多情况下,表级上对库名的映射。

schema_alias_name

String

一对多情况下,表级上对schema名的映射。

filtered

Boolean

该表是否进行数据过滤。

filter_conditions

Array of strings

该表数据的过滤条件,生成加工规则值为SQL条件语句,长度限制512。

最小长度:0

最大长度:512

config_conditions

Array of strings

该表数据过滤高级设置的配置条件,当该表作为联表查询时填写,生成加工规则值为SQL条件语句,长度限制512。

最小长度:0

最大长度:512

is_synchronized

Boolean

是否已经进行同步。

columns

Map<String,ColumnObject>

需要同步/映射/过滤/新增的列,当需要列过滤、列映射、附加列功能时填写,仅在实时同步任务中生效,当整表同步为false时需要填写。

详情请参见表15

表15 columns字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该列在实时同步场景下的类型。取值:

config:当该列作为数据过滤高级设置的关联列时,需要填写,同时如果该列是主建或优化查询所需的索引,则需要填写primary_key_for_data_filtering或index_for_data_filtering。

说明:

是否同步该列到目标库由“filtered”属性控制,与库级、模式级、表级控制方式不同。

primary_key_for_data_filtering

String

该列是否在数据过滤高级设置场景下为主键,如果是主建则填该列列名,否则不填。

index_for_data_filtering

String

优化查询所需的索引,将会为缓存数据增加索引,不会影响源表,当该列作为数据过滤高级设置的关联索引时,需要填写,否则不填。

name

String

该列在目标库的名称(列名映射),当该列为“附加列”时须与数据库表级对象中列名保持一致。

type

String

该列字段的数据类型。 列过滤:填写源列字段的数据类型。 附加列:新填充的列指定字段的数据类型,根据不同操作类型来决定取值范围与约束。取值:

  • 以默认值方式,支持:int,long,varchar(256),datetime,timestamp。
  • 以create_time为列,支持:long,datetime,timestamp。
  • 以update_time为列,支持:long,datetime,timestamp。
  • 以表达式为列,支持:varchar(256),且列值仅为:concat(__current_database, '@', __current_table)
  • 以serverName@database@table为列,支持:varchar(256)。

primary_key_for_column_filtering

String

该列是否在列映射场景下为主键,如果是主建则填PRI,否则填空。

filtered

Boolean

该列是否进列过滤,不能与附加列additional同时使用。取值:

  • true:表示同步该列。
  • false:表示过滤该列不同步。

additional

Boolean

该列是否为附加列,当该列为附加列时:name必须与表级对象中列名一致,并且不能与列过滤filtered同时使用。

operation_type

String

操作类型,以特定的操作类型填充新加的列。取值:

  • 以默认值方式:"operation_type":"ADDITIONALCOLUMN,default_value"
  • 以create_time为列:"operation_type":"ADDITIONALCOLUMN,create_time"
  • 以update_time为列:"operation_type":"ADDITIONALCOLUMN,update_time"
  • 以表达式为列:"operation_type":"ADDITIONALCOLUMN,expression"
  • 以serverName@database@table为列:"operation_type":"ADDITIONALCOLUMN,server_database_table"

value

String

附加列的值。约束:

  • 当操作类型仅“以默认值方式”,“以serverName@database@table为列”时,才支持输入对应字段类型的值。
  • 当操作类型为“以表达式为列”时,该字段为固定值"concat(__current_database, '@', __current_table)",不需要填写。

响应参数

状态码: 202

表16 响应Body参数

参数

参数类型

描述

id

String

查询结果ID。

job_id

String

任务ID。

status

String

查询状态。

枚举值:

  • pending
  • failed
  • success

状态码: 400

表17 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

最小长度:12

最大长度:12

error_msg

String

错误描述。

最小长度:1

最大长度:512

请求示例

数据过滤规则校验:

POST https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/job/c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r/data-filtering/check

{
  "data_process_info" : [ {
    "filter_conditions" : [ {
      "filtering_type" : "contentConditionalFilter",
      "value" : "id>1"
    } ],
    "db_object" : {
      "object_info" : {
        "dyh4" : {
          "name" : "dyh4",
          "all" : false,
          "tables" : {
            "test1_table1" : {
              "name" : "test1_table1",
              "type" : "table",
              "all" : true
            },
            "test1_table10" : {
              "name" : "test1_table10",
              "type" : "table",
              "all" : true
            },
            "test1_table11" : {
              "name" : "test1_table11",
              "type" : "table",
              "all" : true
            }
          }
        }
      },
      "object_scope" : "table"
    }
  } ]
}

响应示例

状态码: 202

Accept

{
  "id" : "0eacda0b-9422-4535-8b62-537d1833638b",
  "job_id": "177738d1-4eee-4fcb-a4e1-09aea79jb20i",
  "status" : "pending"
}

状态码: 400

Bad Request

{
  "error_code" : "DRS.10000010",
  "error_msg" : "Job does not exist, please check job ID."
}

状态码

状态码

描述

202

Accept

400

Bad Request

错误码

请参见错误码