
# 新增字段操作指导
#### 操作场景
- 作业参数配置完成后，将进行字段映射的配置，您可以通过字段映射界面的![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001570951117.png)可自定义新增字段。
- 如果是文件类数据源（FTP/SFTP/HDFS/OBS）之间相互迁移数据，且源端"文件格式"配置为"二进制格式"（即不解析文件内容直接传输），则没有字段映射这一步骤。
- 其他场景下，CDM会自动匹配源端和目的端数据表字段，需用户检查字段映射关系和时间格式是否正确，例如：源字段类型是否可以转换为目的字段类型。
您可以单击字段映射界面的![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001574803625.png)选择"添加新字段"自定义新增字段，通常用于标记数据库来源，以确保导入到目的端数据的完整性。
图1字段映射   
![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001526386420.png "点击放大")
目前支持以下类型自定义字段：
- **常量**
  常量参数即参数值是固定的参数，不需要重新配置值。例如"label"="friends"用来标识常量值。
  
- **变量**
  您可以使用时间宏、表名宏、版本宏等变量来标记数据库来源信息。变量的语法：${variable}，其中"variable"指的是变量。例如"input_time"="${timestamp()}"用来标识当前时间的时间戳。
  
- **表达式**
  您可以使用表达式语言根据运行环境动态生成参数值。表达式的语法：#{expr}，其中"expr"指的是表达式。例如"time"="#{DateUtil.now()}"用来标识当前日期字符串。
  
 
#### 约束限制
- 如果在字段映射界面，CDM通过获取样值的方式无法获得所有列（例如从HBase/CloudTable/MongoDB导出数据时，CDM有较大概率无法获得所有列），则可以单击![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001570750941.png)后选择"添加新字段"来手动增加，确保导入到目的端的数据完整。
- 关系数据库、Hive、MRS Hudi及DLI做源端时，不支持获取样值功能。
- SQLServer作为目的端数据源时，不支持timestamp类型字段的写入，需修改为其他时间类型字段写入（如datetime）。
- 当作业源端为OBS、迁移CSV文件时，并且配置"解析首行为列名"参数的场景下显示列名。
- 当使用二进制格式进行文件到文件的迁移时，没有字段映射这一步。
- 自动创表场景下，需在目的端表中提前手动新增字段，再在字段映射里新增字段。
- 添加完字段后，新增的字段在界面不显示样值，不会影响字段值的传输，CDM会将字段值直接写入目的端。
- 如果字段映射关系不正确，您可以通过拖拽字段、单击![](https://support.huaweicloud.com/bestpractice-dataartsstudio/zh-cn_image_0000001524443730.png)对字段批量映射两种方式来调整字段映射关系。
- 如果是导入到数据仓库服务（DWS），则还需在目的字段中选择分布列，建议按如下顺序选取分布列：
  1. 有主键可以使用主键作为分布列。
  
  2. 多个数据字段联合做主键的场景，建议设置所有主键作为分布列。
  
  3. 在没有主键的场景下，如果没有选择分布列，DWS会默认第一列作为分布列，可能会有数据倾斜风险。
   
- 如CDM不支持源端迁移字段类型，请参见[不支持数据类型转换规避指导](https://support.huaweicloud.com/bestpractice-dataartsstudio/dataartsstudio_05_0021.html#dataartsstudio_05_0021)将字段类型转换为CDM支持的类型。
 
