节点手册 · 数据清洗

KNIME String to Number 文本转数字用法

Manipulation → Column → Convert & Replace

把文本形式的数字转成真正的数值类型。转不动的原因永远只有一个:这一列里有它认不出来的字符。

它解决什么问题

金额列被读成了文本 – 排序会乱、求和会失败、关联会配不上、比较运算符里没有「大于」。这个节点把它变回数值。

反向操作是 Number to String,用在关联前统一两边类型、或者出报表时要保留前导零的场合。

CSV Reader金额读成了文本
→先清掉符号
String Manipulation去逗号和货币符号
→
String to Number转数值
→
GroupBy现在能求和了

前面那个清洗节点常常是必需的。带千分位逗号和货币符号的值,直接转会失败。

基本信息

英文原名String to Number
中文名称文本转数字(iModel 中文界面)
输入端口1 个数据表
输出端口1 个,行数不变
反向节点Number to String
治本的做法其实是别让它变成文本。读取节点里能手工指定列类型,从源头定死,不受自动推断波动影响。这个节点更多是用在「已经拿到一张文本表」或者「清洗之后需要转回来」的场合。

配置项逐条

  • 要转换的列Column Selection

    可以一次选多列。用通配符按列名模式选,比逐个勾稳 – 以后源数据新增同类列会自动被覆盖。

  • 目标类型Integer / Long / Double

    有小数就选 Double。整数类型碰到小数会失败或截断。金额一律选 Double – 即便现在看起来都是整数,将来出现一笔带小数的就炸了。

  • 小数点符号Decimal separator

    中文和英文环境都用点号,一般不用改。数据来自欧洲系统时可能是逗号,那时要改。

  • 千分位符号Thousands separator

    填逗号可以让它自己处理 1,234 这种写法,省掉前面那一步清洗。但货币符号和百分号它管不了,还是要先清。

  • 转换失败时Fail / Insert missing

    中止执行,还是把转不动的置为空值继续跑。调试阶段选中止 – 报错会告诉你是哪一行的什么值卡住了。

    生产流程里若确知有少量脏值,可以改成置空,但下游一定要加一步统计空值数量。否则问题会被藏起来 – 你以为跑通了,实际上有一批金额悄悄变成了空。

String to Number 配置对话框
要转换的列
原值、累计折旧同类列可以一次多选。
目标类型
IntegerDouble 金额一律选 Double。现在都是整数不代表以后没有小数。
千分位符号
,填上可以省掉一步清洗,但货币符号仍要先去掉。
转换失败时
中止执行置为空值继续 选置空就必须在下游统计空值数量,否则问题被藏起来。

三个常见坑

  1. 编号列被顺手转成了数字。身份证号、银行账号、部门编码看起来像数字,但不该是数字 – 前导零会消失,超长数字会变成科学计数法且不可逆。判断标准:这一列你会拿去做加减乘除吗?不会就该保持文本。
  2. 选了置空继续,结果悄悄少了一批数据。汇总金额比预期少,查半天查不出来。用了容错就配套加一步空值统计。
  3. 转完忘了检查是不是真转成功了。看列名旁边的类型图标。图标没变说明这一列压根没被选中 – 一次选多列时容易漏。

什么时候该换别的节点

情况换成
数字要变成文本Number to String
文本要转成日期String to Date&;Time
值里有货币符号、百分号、括号负数先用 String Manipulation 清掉再转
想一劳永逸回读取节点手工指定列类型

转换报错说某个值解析不了

报错里会给出那个值和行号。多半是千分位逗号、货币符号、或者「N/A」这类占位文字。

iModel 专属客服
在线留言或电话联系
在线留言

留下您的问题和联系方式,我们会在一个工作日内回复。

手机与邮箱至少填一项

4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码