字段格式化处理
字段格式化formatResponse数据集成DataHub字段映射
功能概览
我们设计这个功能的初衷是:在数据集成链路中,源系统返回的字段格式往往与下游业务系统、报表或 API 的期望格式不一致。最常见的例子就是源平台把发货日期返回为 YYYYMMDD HH:MM:SS 这种长日期时间字符串,而下游只需要 YYYYMMDD 形式的短日期。如果每一种格式差异都靠脚本或人工清洗,成本会非常高。
因此,轻易云数据集成平台在 DataHub 的字段映射层提供了内置的 formatResponse 自定义函数。它允许用户在配置集成策略时声明一组「原字段 → 新字段 → 目标格式」的映射关系,平台会在数据流转过程中自动完成格式化,并把结果以新字段的形式注入到后续的处理管线中。整个过程无需编写额外脚本,也不依赖外部转换服务。
使用场景
典型使用场景包括但不限于:
- 日期与时间的格式化:源系统返回
20240115 14:30:00,下游需要拆分为日期20240115与时间14:30:00,或者需要相对描述如「三天前」「一周前」。 - 金额的千分位展示:源系统返回的金额是原始数值字符串,需要在报表中显示为带货币符号与千分位的
¥1,000.00,方便财务核对。 - 长文本的截断与省略:详情类字段过长,在列表页或日志中需要截断为
...形式的预览文本,避免数据冗余。 - 数值类型的归一化:源字段为字符串型数字,下游需要严格的整型或固定小数位数的浮点型,可直接通过
intval、round(2)一键转换。 - 数组与文本的互转:标签、分类等多值字段,需要拼接为逗号分隔的字符串用于导出或接口传输。
配置说明
formatResponse 是一个数组结构,数组中的每一项描述一条格式化规则,示例配置如下:
json
"formatResponse": [
{
"old": "delivery_statusInfo.delivery_date",
"new": "modify_date_new",
"format": "date"
}
]
字段含义:
- old:源平台返回的原始字段路径,支持点号(
.)分隔的多层嵌套,例如delivery_statusInfo.delivery_date。 - new:经过格式化后生成的新字段名称,后续节点将直接读取
new字段。 - format:目标格式,可选值见下表。
平台当前支持的格式类型如下:
| 格式关键字 | 说明 | 示例输出 |
|---|---|---|
| date | 标准日期 | 2020-11-11 |
| time | 标准时间 | 13:33:21 |
| dateTime | 日期时间 | 2020-12-12 23:23 |
| shortDate | 短日期 | 09-31 |
| shortTime | 短时间 | 13:23 |
| shortDateTime | 短日期时间 | 09-31 11:23 |
| dateDescription | 文本描述日期 | 一天前、一周前、三个月前、一年前 |
| amount | 金额千分位 | ¥1,000.00、¥0.00 |
| longText(15) | 长文本省略,默认 15 字符 | 这是一个很长很长的文本... |
| intval | 整数 | *整数 |
| round(2) | 浮点精度,默认 2 位 | *浮点精度 |
| implode(',') | 数组转文本,默认英文逗号 | *数组转文本 |
带括号的格式(如 longText(15)、round(2)、implode(','))允许传入自定义参数,覆盖默认值。
注意事项
- 新字段不会覆盖原字段:
new是平台额外生成的字段,原字段old依然保留,便于回溯与对账。 - 字段路径需与源系统一致:
old必须严格按照源平台返回的 JSON 结构填写,包括层级与字段名,否则会取不到值。 - 格式参数慎重使用:
longText、round、implode等带参数的格式,参数变化会直接影响输出结果,建议在策略上线前用样本数据验证。 - 多次格式化可叠加:如果同一字段需要连续做多种处理(例如先转短日期再转文本描述),可以在数组中配置多条规则,依次作用于前一步产生的新字段。
- 相对时间依赖基准:使用
dateDescription时,结果依赖于数据流入时刻与原始时间戳的差值,请确保源时间字段已包含正确的时区信息。 - 金额符号与语言环境:
amount输出默认带¥符号,若下游系统有不同币种或格式要求,请评估是否需要在后续节点再做二次处理。
通过 formatResponse,我们希望把字段格式化这一高频、轻量但繁琐的工作沉淀到平台能力中,让集成策略的可读性更高、运维成本更低。
本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/product-docs/doc-n9403bb8e