
# 批量数据加工 - BatchChangeData
#### 功能介绍
数据复制服务支持对同步的对象进行加工，即可以为选择的对象添加规则。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DRS&api=BatchChangeData)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 接口约束
- 任务创建成功之后，且完成数据库对象选择后再调用启动任务接口。详情可参考[任务创建流程](https://support.huaweicloud.com/api-drs/drs_03_0127.html)。
- 每张表仅支持添加一个校验规则。
- Oracle为源库的数据过滤每次最多支持20000张表，MySQL为源库的数据过滤每次最多支持10000张表。
- 过滤条件不支持使用某种数据库引擎特有的package、函数、变量、常量等写法，须使用通用SQL标准。
 
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-drs/drs_api_0035.html)。
#### URI
POST /v3/{project_id}/jobs/batch-transformation
表1路径参数 
| **参数**     | **是否必选** | **参数类型** | **描述**                                                                                                                                             |
|:---|:---|:---|:---|
| project_id | 是        | String   | 租户在某一Region下的Project ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-drs/drs_api_0106.html)。 |
   
#### 请求参数
表2请求Header参数 
| **参数**       | **是否必选** | **参数类型** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| Content-Type | 是        | String   | 指定类型为application/json。 缺省值：**application/json**                                                                                                                                                                                                                                                                                                                                                      |
| X-Auth-Token | 是        | String   | 从IAM服务获取的用户Token。                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| X-Language   | 否        | String   | 请求语言类型。 缺省值：**en-us** 取值： - **en-us**  - **zh-cn**   |
   
表3请求Body参数 
| **参数** | **是否必选** | **参数类型**         | **描述**                                                                                                                                      |
|:---|:---|:---|:---|
| jobs   | 是        | Array of objects | 批量数据加工规则请求列表。 详情请参见[表4]。 |
   
 表4jobs字段数据结构说明 
| **参数**                | **是否必选** | **参数类型**         | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| job_id                | 否        | String           | 任务ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| object_info           | 否        | Array of objects | 对象信息，生成加工规则时需要填写。 详情请参见[表5]。                                                                                                                                                                                                                                                                                                                                                                                                                 |
| transformation_info   | 是        | Object           | 加工信息。 详情请参见[表6]                                                                                                                                                                                                                                                                                                                                                                                                                          |
| config_transformation | 否        | Object           | - 配置信息，如果存在多张关联表，请生成多条配置规则。满足配置条件的数据将暂存到缓存中，在数据过滤的场景进行使用。  - 配置的库名和表名支持数字、字母和下划线。  - 配置的列名、主键、索引，请确保与源库配置表的字段名保持大小写一致。   详情请参见[表7]。 |
   
 表5object_info字段数据结构说明 
| **参数** | **是否必选** | **参数类型** | **描述**                                                                 |
|:---|:---|:---|:---|
| id     | 否        | String   | 数据库名称和数据库表名称，例如格式为lxl_test1-\*-\*-test_1，其中lxl_test1为数据库名称，test_1为表名称。 |
| select | 否        | String   | 是否选择高级配置，值为true。                                                       |
   
 表6transformation_info字段数据结构说明 
| **参数**              | **是否必选** | **参数类型** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| transformation_type | 是        | String   | - 生成加工规则值为contentConditionalFilter。  - 生成配置规则值为configConditionalFilter。 取值： - **contentConditionalFilter**  - **configConditionalFilter**     |
| value               | 是        | String   | 过滤条件，生成加工规则值为sql条件语句，生成配置规则值为config。长度限制256。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表7config_transformation字段数据结构说明 
| **参数**            | **是否必选** | **参数类型** | **描述**                                                |
|:---|:---|:---|:---|
| db_table_name     | 是        | String   | 库名.表名，例如格式为lxl_test1.test_1，其中lxl_test1为库名，test_1为表名。 |
| db_name           | 是        | String   | 库名。长度限制256。                                           |
| table_name        | 是        | String   | 表名。长度限制256。                                           |
| col_names         | 是        | String   | 列名。长度限制256。                                           |
| prim_key_or_index | 是        | String   | 主键或唯一索引。长度限制256。                                      |
| indexs            | 是        | String   | 优化查询所需的索引。长度限制256。                                    |
| values            | 是        | String   | 过滤条件。长度限制256。                                         |
   
#### 响应参数
**状态码：200**
表8响应Body参数 
| **参数**  | **参数类型**         | **描述**                                                                                                                               |
|:---|:---|:---|
| results | Array of objects | 批量数据加工响应列表。 详情请参见[表9]。 |
| count   | integer          | 总数。                                                                                                                                  |
   
 表9results字段数据结构说明 
| **参数**     | **参数类型** | **描述**                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| id         | String   | 任务ID。                                                                                                                                                                                                                                                                                                                               |
| status     | String   | 状态。取值： - **success**  - **failed**   |
| error_code | String   | 错误码。                                                                                                                                                                                                                                                                                                                                |
| error_msg  | String   | 错误信息。                                                                                                                                                                                                                                                                                                                               |
   
#### 请求示例
- MySQL同步任务数据生成配置规则
  ```
  https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-transformation
  {
    "jobs" : [ {
      "job_id" : "e894593d-5e0a-4652-af7e-1b0c239jb201",
      "object_info" : [ ],
      "transformation_info" : {
        "transformation_type" : "configConditionalFilter",
        "value" : "config"
      },
      "config_transformation" : {
        "col_names" : "id,name",
        "db_name" : "lxl_test1",
        "db_table_name" : "lxl_test1.test_1",
        "indexs" : "name",
        "prim_key_or_index" : "id",
        "table_name" : "test_1",
        "values" : "name like '%a%'"
      }
    } ]
  }
  ```
  
- MySQL同步任务数据生成加工规则，对lxl_test1.test_1的表进行数据过滤，过滤条件为id\>5
  ```
  https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-transformation
  {
    "jobs" : [ {
      "job_id" : "e894593d-5e0a-4652-af7e-1b0c239jb201",
      "object_info" : [ {
        "id" : "lxl_test1-*-*-test_1",
        "select" : "true"
      } ],
      "transformation_info" : {
        "transformation_type" : "contentConditionalFilter",
        "value" : "id>5"
      }
    } ]
  }
  ```
  
 
#### 响应示例
**状态码：200**
OK
```
{
  "count" : 1,
  "results" : [ {
    "id" : "e894593d-5e0a-4652-af7e-1b0c239jb201",
    "status" : "success"
  } ]
}
```
#### 状态码
| **状态码** | **描述**      |
|:---|:---|
| 200     | OK          |
| 400     | Bad Request |
   
其他状态请参见[状态码](https://support.huaweicloud.com/api-drs/drs_api_0108.html)。
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-drs/drs_05_0004.html)。
