数据转换:类型、日期、文本拆合

表读进来了,字段名也对了,但「数量」不能求和、「日期」没法排序、编号带着一堆前后缀。数据转换要解决的就是这些:让字段真正变成能算的东西。

25 分钟预计用时
1 个标记决定成败
4 类最常用的转换
开始之前

这一讲接着第 3 讲往下做。默认你已经能把数据读进来、会用行过滤和列过滤,也知道执行完要回监控面板核对。

先认字段名左边那个小标记

数据转换的一切问题,几乎都能追到同一个地方:字段的类型不对。而类型就明明白白写在字段名左边。

标记类型意味着什么
S字符串文本不能求和、不能求平均;排序按字符比,「10」会排在「9」前面
I整数数值可以计算、可以正常排序、可以做分组统计
D日期日期可以按月分组、可以算区间天数、可以正常排序

从 Excel 或 CSV 读进来的字段,绝大多数默认是字符串。哪怕里面全是数字。这不是软件的毛病,是它不敢替你猜。

一、类型转换:看着是数字,其实是文本

演示会自动播放。鼠标移上去暂停,点任意按钮转为手动,点右上角可以全屏投影。

转换本身很简单,难的是转换会失败。含千分位逗号的「1,240」、带单位的「12 台」、前后有空格的「 9 」,这些都转不成数字。

转换失败默认不报错。节点会把失败的行置为缺失值,然后继续,灯还是绿的。所以每次转完类型都要回监控面板看一眼:缺失值有几个。这个数不是 0,就说明有行没转成。

记住这个顺序:先用字符串处理把文本清干净,再转类型。倒过来做,你会一直在跟失败行较劲。

二、日期:格式串描述的是源数据

「2026年8月31日」在你眼里是日期,在系统里只是一串字符。不转成日期类型,就没法按月分组、没法算区间天数、排序也是按文本排的。

格式串怎么写

这是整个节点唯一的难点,而且几乎所有人第一次都会写错。原因是方向搞反了:格式串描述的是源数据长什么样,不是你想要的结果长什么样。

源数据格式串说明
2026-08-31yyyy-MM-dd最标准的写法
2026年8月31日yyyy年M月d日汉字要原样写进去;是 M 不是 MM
20260831yyyyMMdd没有分隔符,位数必须写死
2026/8/31 14:30yyyy/M/d H:mm带时间就要选「日期与时间」类型

字母个数就是位数:MM 匹配 08,M 匹配 8。源数据里是「8月」而不是「08月」,就得用 M

调试期把「转换失败时」改成让节点失败

这个参数默认是「置为缺失值并继续」。好处是流程不中断,坏处是错误被藏起来了 – 一列日期转失败一半,节点照样绿灯。

建议的做法是两套设置:调试时让它失败,你能第一时间看到哪几行转不了;调完改回缺失值,让流程以后能自动跑完。

三、文本拆合:把信息拆开或拼起来

编号带前后缀、部门信息挤在一个格子里、需要拼一个唯一标识 – 这三件事对应三个节点。

字符串处理截取、替换、去空格、大小写转换。位置固定用 substr,位置不固定用 regexReplace
单元格拆分器按分隔符把一列拆成多列。拆出来的列默认叫 split_0、split_1,顺手改成有意义的名字。
列合并器把多列拼成一列。常用来造唯一标识,比如城市加编号。

正则写不出来是正常的。把字段样例和你要的结果描述给 AI,让它给你一段正则,回来粘贴进去再用预览验证。这是正常用法,不必回避。

四、规则引擎:按条件生成新列

「六十万以上算重大,三十万以上算一般,其余算零星」 – 这种按条件贴标签的活,用规则引擎。写法是一行一条 条件 => 结果,从上往下匹配,命中就停。

规则引擎和行过滤器最容易被搞混。行过滤是减少行,规则引擎是新增一个判断结果的列。四行进去还是四行出来,只是多了一列。这一句记住,两个节点就不会再用错。

还有一条容易漏:最后那条兜底规则不能省。没有它,所有不满足前面条件的行会得到缺失值,而缺失值不报错。你可能要到很后面才发现有一批资产根本没分级。

学完自检

  • 会看字段名左边的类型标记,知道 S 的数值列不能直接算
  • 知道类型转换失败不报错,转完会去核对缺失值数量
  • 会写日期格式串,并且清楚它描述的是源数据不是结果
  • 能剥掉编号的前后缀,能把一列拆成多列
  • 分得清规则引擎(加一列)和行过滤器(减行),知道兜底规则不能省

回去看看你那张表的类型标记

打开手上任何一份读进来的数据,看一眼数值列和日期列的标记。多数人第一次看都会发现问题。

iModel 专属客服
网页直接对话,无需微信
4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码