- 最新动态
- 功能总览
- 产品介绍
- 数据治理方法论
- 准备工作
- 快速入门
-
用户指南
- DataArts Studio使用流程
- 购买并配置DataArts Studio
- 授权用户使用DataArts Studio
-
管理中心
- DataArts Studio支持的数据源
- 创建DataArts Studio数据连接
-
配置DataArts Studio数据连接参数
- DWS数据连接参数说明
- DLI数据连接参数说明
- MRS Hive数据连接参数说明
- Apache Hive数据连接参数说明
- MRS HBase数据连接参数说明
- MRS Kafka数据连接参数说明
- MRS Spark数据连接参数说明
- MRS Clickhouse数据连接参数说明
- MRS Hetu数据连接参数说明
- MRS Impala数据连接参数说明
- MRS Ranger数据连接参数说明
- MRS Presto数据连接参数说明
- Doris数据连接参数说明
- OpenSource ClickHouse数据连接参数说明
- RDS数据连接参数说明
- ORACLE数据连接参数说明
- DIS数据连接参数说明
- 主机连接参数说明
- OBS数据连接参数说明
- Apache HDFS数据连接参数说明
- MRS Hudi数据连接参数说明
- Elasticsearch数据连接参数说明
- Rest Client数据连接参数说明
- DMS Kafka数据连接参数说明
- MongoDB数据连接参数说明
- SFTP/FTP数据连接参数说明
- GBase数据连接参数说明
- Redis数据连接参数说明
- SAP HANA数据连接参数说明
- LTS数据连接参数说明
- 配置DataArts Studio资源迁移
- 配置DataArts Studio企业模式环境隔离
- 管理中心典型场景教程
-
数据集成(CDM作业)
- 数据集成概述
- 约束与限制
- 支持的数据源
- 创建并管理CDM集群
-
在CDM集群中创建连接
- 创建CDM与数据源之间的连接
-
配置连接参数
- OBS连接参数说明
- PostgreSQL/SQLServer连接参数说明
- 数据仓库服务(DWS)连接参数说明
- 云数据库MySQL/MySQL数据库连接参数说明
- Oracle数据库连接参数说明
- DLI连接参数说明
- Hive连接参数说明
- HBase连接参数说明
- HDFS连接参数说明
- FTP/SFTP连接参数说明
- Redis连接参数说明
- DDS连接参数说明
- CloudTable连接参数说明
- MongoDB连接参数说明
- Cassandra连接参数说明
- DIS连接参数说明
- Kafka连接参数说明
- DMS Kafka连接参数说明
- 云搜索服务(CSS)连接参数说明
- Elasticsearch连接参数说明
- 达梦数据库 DM连接参数说明
- SAP HANA连接参数说明
- 分库连接参数说明
- MRS Hudi连接参数说明
- MRS ClickHouse连接参数说明
- 神通(ST)连接参数说明
- CloudTable OpenTSDB连接参数说明
- GBASE连接参数说明
- YASHAN连接参数说明
- 上传CDM连接驱动
- 新建Hadoop集群配置
-
在CDM集群中创建作业
- 新建表/文件迁移作业
- 新建整库迁移作业
-
配置CDM作业源端参数
- 配置OBS源端参数
- 配置HDFS源端参数
- 配置HBase/CloudTable源端参数
- 配置Hive源端参数
- 配置DLI源端参数
- 配置FTP/SFTP源端参数
- 配置HTTP源端参数
- 配置PostgreSQL/SQL Server源端参数
- 配置DWS源端参数
- 配置SAP HANA源端参数
- 配置MySQL源端参数
- 配置Oracle源端参数
- 配置分库源端参数
- 配置MongoDB/DDS源端参数
- 配置Redis源端参数
- 配置DIS源端参数
- 配置Kafka/DMS Kafka源端参数
- 配置Elasticsearch/云搜索服务源端参数
- 配置OpenTSDB源端参数
- 配置MRS Hudi源端参数
- 配置MRS ClickHouse源端参数
- 配置神通(ST)源端参数
- 配置达梦数据库 DM源端参数
- 配置YASHAN源端参数
- 配置CDM作业目的端参数
- 配置CDM作业字段映射
- 配置CDM作业定时任务
- CDM作业配置管理
- 管理单个CDM作业
- 批量管理CDM作业
- 时间宏变量使用解析
- 优化迁移性能
- 关键操作指导
- 使用教程
- 常见错误码参考
-
数据集成(离线作业)
- 离线作业概述
- 支持的数据源
- 新建离线处理集成作业
- 配置离线处理集成作业
-
配置作业源端参数
- 配置MySQL源端参数
- 配置Hive源端参数
- 配置HDFS源端参数
- 配置Hudi源端参数
- 配置PostgreSQL源端参数
- 配置SQLServer源端参数
- 配置Oracle源端参数
- 配置DLI源端参数
- 配置OBS源端参数
- 配置SAP HANA源端参数
- 配置Kafka源端参数
- 配置Rest Client源端参数
- 配置DWS源端参数
- 配置FTP/SFTP源端参数
- 配置Doris源端参数
- 配置HBase 源端参数
- 配置ClickHouse源端参数
- 配置ElasticSearch源端参数
- 配置MongoDB源端参数
- 配置RestApi源端参数
- 配置GBase源端参数
- 配置Redis源端参数
- 配置LTS源端参数
- 配置作业目的端参数
- 字段转换器配置指导
- 新增字段操作指导
- 数据集成(实时作业)
- 数据架构
- 数据指标
-
数据开发
- 数据开发概述
- 数据管理
- 脚本开发
- 作业开发
- 集成作业开发
- 解决方案
- 运行历史
- 运维调度
- 配置管理
- 审批中心
- 下载中心
-
节点参考
- 节点概述
- 节点数据血缘
- CDM Job
- Data Migration
- DIS Stream
- DIS Dump
- DIS Client
- Rest Client
- Import GES
- MRS Kafka
- Kafka Client
- ROMA FDI Job
- DLI Flink Job
- DLI SQL
- DLI Spark
- DWS SQL
- MRS Spark SQL
- MRS Hive SQL
- MRS Presto SQL
- MRS Spark
- MRS Spark Python
- MRS ClickHouse
- MRS HetuEngine
- MRS Impala SQL
- MRS Flink Job
- MRS MapReduce
- CSS
- Shell
- RDS SQL
- ETL Job
- Python
- DORIS SQL
- GBase SQL
- ModelArts Train
- OCR
- Create OBS
- Delete OBS
- OBS Manager
- Open/Close Resource
- Data Quality Monitor
- Sub Job
- For Each
- SMN
- Dummy
- EL表达式参考
- 简易变量集参考
- 使用教程
- 数据质量
- 数据目录
- 数据安全
- 数据服务
- 审计日志
- 最佳实践
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 数据集成API
- 数据开发API(V1)
- 数据开发API(V2)
- 管理中心API
- 数据架构API
- 数据质量API
- 数据目录API
- 数据服务API
- 数据安全API
- 应用示例
- 附录
- SDK参考
-
常见问题
-
咨询与计费
- 区域和可用区如何选择?
- 数据库、数据仓库、数据湖与华为智能数据湖方案是什么,有哪些区别和联系?
- DataArts Studio和沃土是什么关系?
- DataArts Studio和ROMA有什么差异?
- DataArts Studio是否支持私有化部署到本地或私有云?
- 如何在IAM中创建细粒度权限策略?
- 如何实现用户的工作空间隔离,使其无法查看其他未授权工作空间?
- 用户已添加权限,还是无法查看工作空间?
- IAM用户操作时报错“无xx权限”怎么办?
- DataArts Studio的工作空间可以删除吗?
- 可以免费试用DataArts Studio吗?
- 免费试用即将到期,如何续费?
- 实例试用/购买成功后,可以转移到其他账号下吗?
- DataArts Studio是否支持版本升级?
- DataArts Studio是否支持版本降级?
- 如何查看DataArts Studio的版本?
- 购买DataArts Studio实例时为什么选不到指定的IAM项目?
- DataArts Studio的会话超时时间是多少,是否支持修改?
- 套餐包到期未续订或按需资源欠费时,我的数据会保留吗?
- 如何查看套餐包的剩余时长?
- DataArts Studio实例中的CDM没有计费是什么原因?
- 为什么会提示每日执行节点个数超过上限,应该怎么处理?
- 管理中心
-
数据集成(CDM作业)
- CDM与其他数据迁移服务有什么区别,如何选择?
- CDM有哪些优势?
- CDM有哪些安全防护?
- 如何降低CDM使用成本?
- CDM未使用数据传输功能时,是否会计费?
- 已购买包年包月的CDM套餐包,为什么还会产生按需计费的费用?
- 如何查看套餐包的剩余时长?
- CDM可以跨账户使用吗?
- CDM集群是否支持升级操作?
- CDM迁移性能如何?
- CDM不同集群规格对应并发的作业数是多少?
- 是否支持增量迁移?
- 是否支持字段转换?
- Hadoop类型的数据源进行数据迁移时,建议使用的组件版本有哪些?
- 数据源为Hive时支持哪些数据格式?
- 是否支持同步作业到其他集群?
- 是否支持批量创建作业?
- 是否支持批量调度作业?
- 如何备份CDM作业?
- 如何解决HANA集群只有部分节点和CDM集群网络互通?
- 如何使用Java调用CDM的Rest API创建数据迁移作业?
- 如何将云下内网或第三方云上的私网与CDM连通?
- CDM是否支持参数或者变量?
- CDM迁移作业的抽取并发数应该如何设置?
- CDM是否支持动态数据实时迁移功能?
- CDM是否支持集群关机功能?
- 如何使用表达式方式获取当前时间?
- 日志提示解析日期格式失败时怎么处理?
- 字段映射界面无法显示所有列怎么处理?
- CDM迁移数据到DWS时如何选取分布列?
- 迁移到DWS时出现value too long for type character varying怎么处理?
- OBS导入数据到SQL Server时出现Unable to execute the SQL statement怎么处理?
- 获取集群列表为空/没有权限访问/操作时报当前策略不允许执行?
- Oracle迁移到DWS报错ORA-01555
- MongoDB连接迁移失败时如何处理?
- Hive迁移作业长时间卡顿怎么办?
- 使用CDM迁移数据由于字段类型映射不匹配导致报错怎么处理?
- MySQL迁移时报错“JDBC连接超时”怎么办?
- 创建了Hive到DWS类型的连接,进行CDM传输任务失败时如何处理?
- 如何使用CDM服务将MySQL的数据导出成SQL文件,然后上传到OBS桶?
- 如何处理CDM从OBS迁移数据到DLI出现迁移中断失败的问题?
- 如何处理CDM连接器报错“配置项 [linkConfig.iamAuth] 不存在”?
- 报错“配置项[linkConfig.createBackendLinks]不存在”或“配置项 [throttlingConfig.concurrentSubJobs] 不存在怎么办”?
- 新建MRS Hive连接时,提示:CORE_0031:Connect time out. (Cdm.0523) 怎么解决?
- 迁移时已选择表不存在时自动创表,提示“CDM not support auto create empty table with no column”怎么处理?
- 创建Oracle关系型数据库迁移作业时,无法获取模式名怎么处理?
- MySQL迁移时报错:invalid input syntax for integer: "true"
- 数据集成(实时作业)
- 数据架构
-
数据开发
- 数据开发可以创建多少个作业,作业中的节点数是否有限制?
- DataArts Studio支持自定义的Python脚本吗?
- 作业关联的CDM集群删除后,如何快速修复?
- 作业的计划时间和开始时间相差大,是什么原因?
- 相互依赖的几个作业,调度过程中某个作业执行失败,是否会影响后续作业?这时该如何处理?
- 通过DataArts Studio调度大数据服务时需要注意什么?
- 环境变量、作业参数、脚本参数有什么区别和联系?
- 打不开作业日志,返回404报错?
- 配置委托时获取委托列表失败如何处理?
- 数据开发创建数据连接,为什么选不到指定的周边资源?
- 配置了SMN通知,却收不到作业失败告警通知?
- 作业配置了周期调度,但是实例监控没有作业运行调度记录?
- Hive SQL和Spark SQL脚本执行失败,界面只显示执行失败,没有显示具体的错误原因?
- 数据开发节点运行中报TOKEN不合法?
- 作业开发时,测试运行后如何查看运行日志?
- 月周期的作业依赖天周期的作业,为什么天周期作业还未跑完,月周期的作业已经开始运行?
- 执行DLI脚本,报Invalid authentication怎么办?
- 创建数据连接时,在代理模式下为什么选不到需要的CDM集群?
- 作业配置了每日调度,但是实例没有作业运行调度记录?
- 查看作业日志,但是日志中没有内容?
- 创建了2个作业,但是为什么无法建立依赖关系?
- DataArts Studio执行调度时,报错提示“作业没有可以提交的版本”怎么办?
- DataArts Studio执行调度时,报错提示“作业中节点XXX关联的脚本没有提交的版本”怎么办?
- 提交调度后的作业执行失败,报depend job [XXX] is not running or pause怎么办?
- 如何创建数据库和数据表,数据库对应的是不是数据连接?
- 为什么执行完HIVE任务什么结果都不显示?
- 在作业监控页面里的“上次实例状态”只有运行成功、运行失败,这是为什么?
- 如何创建通知配置对全量作业都进行结果监控?
- 数据开发的并行执行节点数是多少?
- DataArts Studio是否支持修改时区?
- CDM作业改名后,在数据开发中如何同步?
- 执行RDS SQL,报错hll不存在,在DataArts Studio可以执行成功?
- 创建DWS数据连接时报错提示“The account has been locaked”怎么处理?
- 作业实例取消了,日志提示“The node start execute failed, so the current node status is set to cancel.”怎么处理?
- 调用数据开发接口报错“Workspace does not exists”怎么处理?
- Postman调用接口返回结果正常,为什么测试环境调用接口的URL参数不生效?
- 执行Python脚本报错:Agent need to be updated?
- 节点状态为成功,为什么日志显示运行失败?
- 调用数据开发API报错Unknown Exception?
- 调用创建资源的API报错“资源名不合法”是什么原因?
- 补数据的作业实例都是成功的,为什么补数据任务失败了?
- DWS数据连接可视化建表,报错提示“表已存在”,但是展开数据连接看不到该表?
- 调度MRS spark作业报错“The throttling threshold has been reached: policy user over ratelimit,limit:60,time:1 minute.”怎么处理?
- 执行Python脚本,报错“UnicodeEncodeError :‘ascii' codec cant encode characters in position 63-64 : ordinal not in range ( 128 )”怎么处理?
- 查看日志时,系统提示“OBS日志文件不存在,请检查文件是否被删除或者没有OBS写入权限。”怎么办?
- Shell/Python节点执行失败,后台报错session is down
- 请求头中参数值长度超过512个字符时,何如处理?
- 执行DWS SQL脚本时,提示id不存在,如何处理?
- 如何查看CDM作业被哪些作业进行调用?
- 执行SQL语句失败,系统提示“Failed to create ThriftService instance, please check the cluster has available resources and check YARN or Spark driver's logs for further information”,如何处理?
- 使用python调用执行脚本的api报错:The request parameter invalid,如何处理?
- 在ECS上调试好的shell脚本,在DLF中shell脚本执行异常,如何处理?
- DataArts Studio调度CDM任务时报错Given transaction id [xxxx] is invalid,如何处理?
- 在数据开发子模块中,doris SQL作业执行失败,是什么原因?
- 在数据开发子模块中,新建的DLI SQL脚本默认队列是一个已删除的队列,怎么处理?
- 数据开发中的事件驱动是否支持线下kafka?
- 数据质量
- 数据目录
- 数据安全
- 数据服务
-
咨询与计费
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
字段转换器配置指导
操作场景
- 作业参数配置完成后,将进行字段映射的配置,您可以单击操作列下
创建字段转换器。
- 如果是文件类数据源(FTP/SFTP/HDFS/OBS)之间相互迁移数据,且源端“文件格式”配置为“二进制格式”(即不解析文件内容直接传输),则没有字段映射这一步骤。

CDM可以在迁移过程中对字段进行转换,目前支持以下字段转换器:
约束限制
- 作业源端开启“使用SQL语句”参数时不支持配置转换器。
- 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列),则可以单击
后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。
- 关系数据库、Hive、MRS Hudi及DLI做源端时,不支持获取样值功能。
- SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datetime)。
- 当作业源端为OBS、迁移CSV文件时,并且配置“解析首行为列名”参数的场景下显示列名。
- 当使用二进制格式进行文件到文件的迁移时,没有配置字段转换器这一步。
- 自动创表场景下,需在目的端表中提前手动新增字段,再在字段映射里新增字段。
- 添加完字段后,新增的字段在界面不显示样值,不会影响字段值的传输,CDM会将字段值直接写入目的端。
- 如果字段映射关系不正确,您可以通过拖拽字段、单击
对字段批量映射两种方式来调整字段映射关系。
- 创建表达式转换器时,表达式的功能是对该字段的数据进行处理,故不建议使用时间宏,如需使用,请根据以下场景处理(源端是文件类的配置时仅支持方式一):
- 如果是导入到数据仓库服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列:
- 有主键可以使用主键作为分布列。
- 多个数据段联合做主键的场景,建议设置所有主键作为分布列。
- 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。
表达式转换
使用JSP表达式语言(Expression Language)对当前字段或整行数据进行转换。JSP表达式语言可以用来创建算术和逻辑表达式。在表达式内可以使用整型数,浮点数,字符串,常量true、false和null。
数据进行转换过程中,替换内容包含特殊字符时,需要先使用\将该字符转义成普通字符。
- 表达式支持以下两个环境变量:
- value:当前字段值。
- row:当前行,数组类型。
- 表达式支持的工具类用法罗列如下,未列出即表示不支持:
- 如果当前字段为字符串类型,将字符串全部转换为小写,例如将“aBC”转换为“abc”。
表达式:StringUtils.lowerCase(value)
- 将当前字段的字符串全部转为大写。
- 如果想将第1个日期字段格式从“2018-01-05 15:15:05”转换为“20180105”。
表达式:DateUtils.format(DateUtils.parseDate(row[0],"yyyy-MM-dd HH:mm:ss"),"yyyyMMdd")
- 如果想将时间戳转换成“yyyy-MM-dd hh:mm:ss”格式的日期字符串的类型,例如字段值为“1701312046588”,转换后为“2023-11-30 10:40:46”。
表达式:DateUtils.format(NumberUtils.toLong(value),"yyyy-MM-dd HH:mm:ss")
- 如果想将“yyyy-MM-dd hh:mm:ss”格式的日期字符串转换成时间戳的类型。
表达式:DateUtils.getTime(DateUtils.parseDate(value,"yyyy-MM-dd hh:mm:ss"))
- 如果当前字段值为“yyyy-MM-dd”格式的日期字符串,需要截取年,例如字段值为“2017-12-01”,转换后为“2017”。
表达式:StringUtils.substringBefore(value,"-")
- 如果当前字段值为数值类型,转换后值为当前值的两倍。
- 如果当前字段值为“true”,转换后为“Y”,其它值则转换后为“N”。
表达式:value=="true"?"Y":"N"
- 如果当前字段值为字符串类型,当为空时,转换为“Default”,否则不转换。
表达式:empty value? "Default":value
- 如果想将日期字段格式从“2018/01/05 15:15:05”转换为“2018-01-05 15:15:05”。
表达式:DateUtils.format(DateUtils.parseDate(value,"yyyy/MM/dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss")
- 获取一个36位的UUID(Universally Unique Identifier,通用唯一识别码)。
- 如果当前字段值为字符串类型,将首字母转换为大写,例如将“cat”转换为“Cat”。
表达式:StringUtils.capitalize(value)
- 如果当前字段值为字符串类型,将首字母转换为小写,例如将“Cat”转换为“cat”。
表达式:StringUtils.uncapitalize(value)
- 如果当前字段值为字符串类型,使用空格填充为指定长度,并且将字符串居中,当字符串长度不小于指定长度时不转换,例如将“ab”转换为长度为4的“ab”。
表达式:StringUtils.center(value,4)
- 删除字符串末尾的一个换行符(包括“\n”、“\r”或者“\r\n”),例如将“abc\r\n\r\n”转换为“abc\r\n”。
表达式:StringUtils.chomp(value)
- 如果字符串中包含指定的字符串,则返回布尔值true,否则返回false。例如“abc”中包含“a”,则返回true。
表达式:StringUtils.contains(value,"a")
- 如果字符串中包含指定字符串的任一字符,则返回布尔值true,否则返回false。例如“zzabyycdxx”中包含“z”或“a”任意一个,则返回true。
表达式:StringUtils.containsAny(value,"za")
- 如果字符串中不包含指定的所有字符,则返回布尔值true,包含任意一个字符则返回false。例如“abz”中包含“xyz”里的任意一个字符,则返回false。
表达式:StringUtils.containsNone(value,"xyz")
- 如果当前字符串只包含指定字符串中的字符,则返回布尔值true,包含任意一个其它字符则返回false。例如“abab”只包含“abc”中的字符,则返回true。
表达式:StringUtils.containsOnly(value,"abc")
- 如果字符串为空或null,则转换为指定的字符串,否则不转换。例如将空字符转换为null。
- 如果字符串以指定的后缀结尾(包括大小写),则返回布尔值true,否则返回false。例如“abcdef”后缀不为null,则返回false。
表达式:StringUtils.endsWith(value,null)
- 如果字符串和指定的字符串完全一样(包括大小写),则返回布尔值true,否则返回false。例如比较字符串“abc”和“ABC”,则返回false。
表达式:StringUtils.equals(value,"ABC")
- 从字符串中获取指定字符串的第一个索引,没有则返回整数-1。例如从“aabaabaa”中获取“ab”的第一个索引1。
表达式:StringUtils.indexOf(value,"ab")
- 从字符串中获取指定字符串的最后一个索引,没有则返回整数-1。例如从“aFkyk”中获取“k”的最后一个索引4。
表达式:StringUtils.lastIndexOf(value,"k")
- 从字符串中指定的位置往后查找,获取指定字符串的第一个索引,没有则转换为“-1”。例如“aabaabaa”中索引3的后面,第一个“b”的索引是5。
表达式:StringUtils.indexOf(value,"b",3)
- 从字符串获取指定字符串中任一字符的第一个索引,没有则返回整数-1。例如从“zzabyycdxx”中获取“z”或“a”的第一个索引0。
表达式:StringUtils.indexOfAny(value,"za")
- 如果字符串仅包含Unicode字符,返回布尔值true,否则返回false。例如“ab2c”中包含非Unicode字符,返回false。
表达式:StringUtils.isAlpha(value)
- 如果字符串仅包含Unicode字符或数字,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。
表达式:StringUtils.isAlphanumeric(value)
- 如果字符串仅包含Unicode字符、数字或空格,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。
表达式:StringUtils.isAlphanumericSpace(value)
- 如果字符串仅包含Unicode字符或空格,返回布尔值true,否则返回false。例如“ab2c”中包含Unicode字符和数字,返回false。
表达式:StringUtils.isAlphaSpace(value)
- 如果字符串仅包含ASCII可打印字符,返回布尔值true,否则返回false。例如“!ab-c~”返回true。
表达式:StringUtils.isAsciiPrintable(value)
- 如果字符串为空或null,返回布尔值true,否则返回false。
- 如果字符串中仅包含Unicode数字,返回布尔值true,否则返回false。
- 获取字符串最左端的指定长度的字符,例如获取“abc”最左端的2位字符“ab”。
表达式:StringUtils.left(value,2)
- 获取字符串最右端的指定长度的字符,例如获取“abc”最右端的2位字符“bc”。
表达式:StringUtils.right(value,2)
- 将指定字符串拼接至当前字符串的左侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”左侧,拼接后长度为8,则转换后为“yzyzybat”。
表达式:StringUtils.leftPad(value,8,"yz")
- 将指定字符串拼接至当前字符串的右侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”右侧,拼接后长度为8,则转换后为“batyzyzy”。
表达式:StringUtils.rightPad(value,8,"yz")
- 如果当前字段为字符串类型,获取当前字符串的长度,如果该字符串为null,则返回0。
- 如果当前字段为字符串类型,删除其中所有的指定字符串,例如从“queued”中删除“ue”,转换后为“qd”。
表达式:StringUtils.remove(value,"ue")
- 如果当前字段为字符串类型,移除当前字段末尾指定的子字符串。指定的子字符串若不在当前字段的末尾,则不转换,例如移除当前字段“www.domain.com”后的“.com”。
表达式:StringUtils.removeEnd(value,".com")
- 如果当前字段为字符串类型,移除当前字段开头指定的子字符串。指定的子字符串若不在当前字段的开头,则不转换,例如移除当前字段“www.domain.com”前的“www.”。
表达式:StringUtils.removeStart(value,"www.")
- 如果当前字段为字符串类型,替换当前字段中所有的指定字符串,例如将“aba”中的“a”用“z”替换,转换后为“zbz”。
表达式:StringUtils.replace(value,"a","z")
替换内容包含特殊字符时,需要先把该字符转义成普通字符,例如,客户想通过该表达式把字符串中 \t 去掉时,需要配置为: StringUtils.replace(value,"\\t","")(即把 \ 再次转义)。
- 如果当前字段为字符串类型,一次替换字符串中的多个字符,例如将字符串“hello”中的“h”用“j”替换,“o”用“y”替换,转换后为“jelly”。
表达式:StringUtils.replaceChars(value,"ho","jy")
- 如果字符串以指定的前缀开头(区分大小写),则返回布尔值true,否则返回false,例如当前字符串“abcdef”以“abc”开头,则返回true。
表达式:StringUtils.startsWith(value,"abc")
- 如果当前字段为字符串类型,去除字段中首、尾处所有指定的字符,例如去除“abcyx”中首尾所有的“x”、“y”、“z”和“b”,转换后为“abc”。
表达式:StringUtils.strip(value,"xyzb")
- 如果当前字段为字符串类型,去除字段末尾所有指定的字符,例如去除当前字段末尾的“abc”字符串。
- 如果当前字段为字符串类型,去除字段开头所有指定的字符,例如去除当前字段开头的所有空格。
- 如果当前字段为字符串类型,获取字符串指定位置后(索引从0开始,包括指定位置的字符)的子字符串,指定位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”索引为2的字符(即c)及之后的字符串,则转换后为“cde”。
表达式:StringUtils.substring(value,2)
- 如果当前字段为字符串类型,获取字符串指定区间(索引从0开始,区间起点包括指定位置的字符,区间终点不包含指定位置的字符)的子字符串,区间位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”第2个字符(即c)及之后、第4个字符(即e)之前的字符串,则转换后为“cd”。
表达式:StringUtils.substring(value,2,4)
- 如果当前字段为字符串类型,获取当前字段里第一个指定字符后的子字符串。例如获取“abcba”中第一个“b”之后的子字符串,转换后为“cba”。
表达式:StringUtils.substringAfter(value,"b")
- 如果当前字段为字符串类型,获取当前字段里最后一个指定字符后的子字符串。例如获取“abcba”中最后一个“b”之后的子字符串,转换后为“a”。
表达式:StringUtils.substringAfterLast(value,"b")
- 如果当前字段为字符串类型,获取当前字段里第一个指定字符前的子字符串。例如获取“abcba”中第一个“b”之前的子字符串,转换后为“a”。
表达式:StringUtils.substringBefore(value,"b")
- 如果当前字段为字符串类型,获取当前字段里最后一个指定字符前的子字符串。例如获取“abcba”中最后一个“b”之前的子字符串,转换后为“abc”。
表达式:StringUtils.substringBeforeLast(value,"b")
- 如果当前字段为字符串类型,获取嵌套在指定字符串之间的子字符串,没有匹配的则返回null。例如获取“tagabctag”中“tag”之间的子字符串,转换后为“abc”。
表达式:StringUtils.substringBetween(value,"tag")
- 如果当前字段为字符串类型,删除当前字符串两端的控制字符(char≤32),例如删除字符串前后的空格。
- 将当前字符串转换为字节,如果转换失败,则返回0。
- 将当前字符串转换为字节,如果转换失败,则返回指定值,例如指定值配置为1。
- 将当前字符串转换为Double数值,如果转换失败,则返回0.0d。
- 将当前字符串转换为Double数值,如果转换失败,则返回指定值,例如指定值配置为1.1d。
- 将当前字符串转换为Float数值,如果转换失败,则返回0.0f。
- 将当前字符串转换为Float数值,如果转换失败,则返回指定值,例如配置指定值为1.1f。
- 将当前字符串转换为Int数值,如果转换失败,则返回0。
- 将当前字符串转换为Int数值,如果转换失败,则返回指定值,例如配置指定值为1。
- 将字符串转换为Long数值,如果转换失败,则返回0。
- 将当前字符串转换为Long数值,如果转换失败,则返回指定值,例如配置指定值为1L。
- 将字符串转换为Short数值,如果转换失败,则返回0。
- 将当前字符串转换为Short数值,如果转换失败,则返回指定值,例如配置指定值为1。
- 将当前IP字符串转换为Long数值,例如将“10.78.124.0”转换为Long数值是“172915712”。
表达式:CommonUtils.ipToLong(value)
- 从网络读取一个IP与物理地址映射文件,并存放到Map集合,这里的URL是IP与地址映射文件存放地址,例如“http://10.114.205.45:21203/sqoop/IpList.csv”。
表达式:HttpsUtils.downloadMap("url")
- 将IP与地址映射对象缓存起来并指定一个key值用于检索,例如“ipList”。
表达式:CommonUtils.setCache("ipList",HttpsUtils.downloadMap("url"))
- 取出缓存的IP与地址映射对象。
- 判断是否有IP与地址映射缓存。
- 根据IP取出对应的详细地址:国家_省份_城市_运营商,例如“1xx.78.124.0”对应的地址为“中国_广东_深圳_电信”,取不到对应地址则默认“**_**_**_**”。如果需要,可通过StringUtil类表达式对地址进行进一步拆分。
表达式:CommonUtils.getMapValue(CommonUtils.ipToLong(value),CommonUtils.cacheExists("ipLis")?CommonUtils.getCache("ipLis"):CommonUtils.setCache("ipLis",HttpsUtils.downloadMap("url")))
- 根据指定的偏移类型(month/day/hour/minute/second)及偏移量(正数表示增加,负数表示减少),将指定格式的时间转换为一个新时间,例如将“2019-05-21 12:00:00”增加8个小时。
表达式:DateUtils.getCurrentTimeByZone("yyyy-MM-dd HH:mm:ss",value, "hour", 8)
- 如果value值为空或者null时,则返回字符串“aaa”,否则返回value。
- 如果当前字段为字符串类型,将字符串全部转换为小写,例如将“aBC”转换为“abc”。