校验数据过滤规则 - CheckDataFilterRules
功能介绍
校验数据过滤规则
接口约束
1.一般过滤条件中涉及到子查询,需要提前配置高级配置过滤条件
2.仅Mysql-Mysql、Mysql-Taurus链路支持高级配置过滤条件功能
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权,具体权限要求请参见权限和授权项。
- 如果使用身份策略授权,当前API调用无需身份策略权限。
URI
POST /v5/{project_id}/jobs/{job_id}/check-filter-rules
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| project_id | 是 | String | 参数解释: 租户在某一Region下的Project ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及 |
| job_id | 是 | String | 参数解释: 任务ID,用于唯一标识一个数据复制任务,用于指定需要校验数据过滤规则的具体同步任务。可通过查询任务列表接口获取已有任务的job_id。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| Content-Type | 否 | String | 参数解释: 发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。 约束限制: 不涉及。 取值范围: application/json 默认取值: application/json |
| X-Auth-Token | 是 | String | 参数解释: 从IAM服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| X-Language | 否 | String | 参数解释: 请求语言类型。 约束限制: 请根据语言环境,参考支持的范围指定请求语言类型。 取值范围:
默认取值: en-us |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| general_filtering_list | 否 | Array of objects | 参数解释: 数据过滤条件列表。包含需要校验的数据过滤规则信息。 详情请参见表4。 约束限制: 当data_filter_type为common(简单条件过滤)时,此参数为必填项。列表中的每个元素代表一组过滤条件,包含过滤对象列表和源库过滤条件SQL。包含以下关键字段:filter_object_list(过滤对象列表)/source_filter_condition(源库过滤条件SQL)。适用条件:data_filter_type=common时必填。 取值范围: 不涉及。 默认取值: 不涉及。 |
| advanced_setting_list | 否 | Array of objects | 参数解释: 数据过滤高级设置列表。用于配置关联表场景下的高级过滤规则,包含数据库名、表名、列名、索引等详细过滤配置。 详情请参见表6。 约束限制: 当前仅MySQL到 MySQL链路支持此功能。适用条件:data_filter_type=config时必填。 取值范围: 不涉及。 默认取值: 不涉及。 |
| source | 否 | String | 参数解释: 校验请求的来源场景。用于区分数据过滤规则校验是来自数据同步任务执行场景,还是来自数据对比任务执行场景。 约束限制: 不涉及。 取值范围:
默认取值: job |
| data_filter_type | 否 | String | 参数解释: 数据过滤类型。用于指定数据过滤规则的模式,common表示简单条件过滤(单表过滤条件),config表示关联表过滤(多表关联条件过滤)。 约束限制: 当简单条件过滤是子查询时,需要先校验关联条件,关联条件校验成功之后,需要保存关联条件。 取值范围:
默认取值: common |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| filter_object_list | 否 | Array of objects | 参数解释: 数据过滤对象列表。包含需要校验的具体数据库对象(库/Schema/表)信息。 详情请参见表5。 约束限制: 在简单条件过滤场景下为必填项,列表中的每个元素代表一个待过滤的数据库对象。 取值范围: 不涉及。 默认取值: 不涉及。 |
| source_filter_condition | 否 | String | 参数解释: 源端数据库的过滤条件SQL语句。用于定义源库数据过滤规则,支持SQL子查询等高级过滤表达式。当数据过滤涉及子查询场景时,需要通过此字段配置查询条件。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| id | 是 | String | 参数解释: 数据过滤对象的唯一标识。用于标识待过滤的数据库对象,填写格式为层级路径形式。 约束限制: 填写格式为以下三种之一:库名---表名、schema名---表名、库名---schema名---表名。 取值范围: 不涉及。 默认取值: 不涉及。 |
| parent_id | 是 | String | 参数解释: 数据过滤对象的父级对象标识。用于标识当前过滤对象所属的上级数据库对象(库或Schema)。 约束限制: 填写格式为以下三种之一:库名、schema名、库名---schema名。 取值范围: 不涉及。 默认取值: 不涉及。 |
| object_name | 是 | String | 参数解释: 数据过滤对象的名称。即当前需要进行过滤操作的具体数据库表名。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| object_type | 否 | String | 参数解释: 数据过滤对象的类型。标识当前过滤对象的数据库对象类型,如表、视图、存储过程等。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| db_name | 是 | String | 参数解释: 库名。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| table_name | 是 | String | 参数解释: 表名。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| col_names | 是 | String | 参数解释: 列名。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| prim_key_or_indexes | 是 | String | 参数解释: 主键或唯一索引。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| indexes | 是 | String | 参数解释: 优化查询所需的索引。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| values | 是 | String | 参数解释: 过滤条件。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
响应参数
状态码:202
| 参数 | 参数类型 | 描述 |
|---|---|---|
| id | String | 参数解释: 异步校验任务的查询标识。提交数据过滤规则校验请求后返回的任务ID,用于后续查询任务执行进度。 约束限制: 通过查询/v5/{project_id}/job/{job_id}/data-filtering/result接口获取校验结果。 取值范围: 不涉及。 |
状态码:400
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码,当任务报错时返回的错误代码。 约束限制:
取值范围: 格式为DRS.XXXXXX。 |
| error_msg | String | 参数解释: 错误详细信息,当任务执行失败时返回的具体错误描述。 约束限制:
取值范围: 不涉及。 |
请求示例
- 源库是库表或者schema表,两层对象结构的批量数据过滤规则请求体
POST https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs/c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r/check-filter-rules { "general_filtering_list" : [ { "filter_object_list" : [ { "id" : "test_drs-*-*-mysql1", "parent_id" : "test_drs", "object_name" : "mysql1", "object_alias_name" : "test-*-*-test1", "object_type" : "table" }, { "id" : "test_drs-*-*-mysql2", "parent_id" : "test_drs", "object_name" : "mysql1", "object_alias_name" : "test-*-*-test2", "object_type" : "table" } ], "source_filter_condition" : "id > 1" } ], "source" : "job", "data_filter_type" : "common" } - 源库是库schema表,三层对象结构的批量数据过滤规则请求体
POST https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs/c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r/check-filter-rules { "general_filtering_list" : [ { "filter_object_list" : [ { "id" : "test_db-*-*-testschema-*-*-test_table01", "parent_id" : "test_db-*-*-testschema", "object_name" : "test_table", "object_alias_name" : "test_db-*-*-testschema-*-*-test01", "object_type" : "table" }, { "id" : "test_db-*-*-testschema-*-*-test_table02", "parent_id" : "test_db-*-*-testschema", "object_name" : "test_table", "object_alias_name" : "test_db-*-*-testschema-*-*-test02", "object_type" : "table" } ], "source_filter_condition" : "id > 1" } ], "source" : "job", "data_filter_type" : "common" } - 高级配置过滤条件,一般过滤条件中涉及到子查询,需要提前配置高级配置过滤条件
POST https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs/c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r/check-filter-rules { "advanced_setting_list" : [ { "db_name" : "test_drs", "table_name" : "mysql5", "col_names" : "id", "prim_key_or_indexes" : "id", "indexes" : "id", "values" : "id > 1" } ], "source" : "job", "data_filter_type" : "config" } - 一般过滤条件中涉及到子查询的场景
POST https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs/c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r/check-filter-rules { "general_filtering_list" : [ { "filter_object_list" : [ { "id" : "test_drs-*-*-mysql3", "parent_id" : "test_drs", "object_name" : "mysql3", "object_alias_name" : "test-*-*-mysql3", "object_type" : "table" } ], "source_filter_condition" : "id in (select id from test_drs.mysql5 where id > 1)" } ], "source" : "job", "data_filter_type" : "common" }
响应示例
状态码:202
校验数据过滤规则响应体
{
"id" : "0eacda0b-9422-4535-8b62-537d1833638b"
} 状态码:400
Bad Request
{
"error_code" : "DRS.10000010",
"error_msg" : "Job does not exist, please check job ID."
} 错误码
请参见错误码。