节点手册 · 计算

KNIME Math Formula 数值计算用法

Manipulation → Column → Convert & Replace

写公式算新列。整数相除会截断、缺失值参与运算结果为空 – 这两条是它最常见的两个意外。

它解决什么问题

逐行做数值运算:算折旧、算占比、算差额、做单位换算。输入一张表,输出多一列(或覆盖原列)的表,行数不变。

String Manipulation 的分工很直白:数字用它,文本用那个。要按条件分支输出不同结果,用 Rule Engine

它在流程里的位置

Missing Value补空值
Math Formula算净值 / 占比
Rule Engine按结果分档
GroupBy汇总

放在补空值之后是有讲究的。参与运算的列只要有一格是空,那一行的计算结果就是空。

基本信息

英文原名Math Formula
中文名称数学公式(iModel 中文界面)
输入端口1 个数据表
输出端口1 个,行数不变
一次算几列一列。要算多列就串多个节点,或者改用 Column Expressions

配置项逐条

  • Expression表达式

    引用列用 $列名$ – 双击左侧列名列表自动插入,别手打。支持四则运算、括号,以及左侧列出的函数:取整、绝对值、四舍五入、幂、对数等。

  • Append column / Replace column追加新列 / 覆盖原列

    追加会多一列并让你起名。计算阶段建议追加,原值留着好核对;确认无误再考虑覆盖。

  • Convert to Int结果转成整数

    勾上则结果转整数。注意它是截断不是四舍五入,3.9 会变成 3。要四舍五入请在表达式里用 round 函数,别指望这个勾选项。

Math Formula 配置对话框
表达式Expression
$原值$ - $累计折旧$ 列引用双击左侧列名插入。参与运算的列必须是数值类型。
输出方式Append / Replace
追加新列:资产净值覆盖原列
结果转整数Convert to Int
勾选不勾 它是截断不是四舍五入。要四舍五入在表达式里写 round。

三个常见坑

  1. 整数相除结果被截断。两个整数列相除,结果按整数算,3 / 4 得到 0 而不是 0.75。算占比时这个坑几乎人人踩一次。修法是让其中一边变成小数,比如写成 $完成数$ * 1.0 / $总数$
  2. 参与运算的列是文本,节点直接报错或选不了。看列名旁的类型图标。数字被读成文本的原因和修法,在列类型那一篇里讲全了。
  3. 某一格是空,整行结果就是空。缺失值参与任何运算,结果都是缺失值 – 不报错。所以计算之前先想清楚空值怎么处理,是补零、补均值,还是本来就该保留为空。

什么时候该换别的节点

情况换成
要一次算好几列Column Expressions,一个节点里写多个输出列
要按条件输出不同结果Rule Engine
是文本处理不是数值计算String Manipulation
要跨行算,比如累计求和Moving Aggregation 一类的节点,Math Formula 只逐行算
最后一条容易被忽略。Math Formula 每次只看当前这一行,它不知道上一行是什么。要算累计、环比、同比这类跨行的东西,得换专门的节点,或者先用 Joiner 把上期数据接到同一行上。

算占比结果全是 0

整数相除截断。在表达式里乘一个 1.0 就好。

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

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码