前两天刷到 Roxanne Agerone 大神(Tableau 工程师,干了 8 年)的一篇 LinkedIn 短文,又被 Flerlage Twins 的 Ken 和 Kevin 大神转载了出来。就讲一个功能,但我个人觉得很值得记一笔:Tableau 偷偷藏了个 [scale] 数字格式令牌,一行格式串,就能顶替以前要写计算字段才能干的事。
下面我把干货给大家捋一遍,最后把我自己的实测也一并放上。
01 常规操作
就是那种 1,000 和 2,300,000,000 挤在同一列、还都抢那 60 像素宽度的表。一个看着像零钱,另一个像手滑打错的。一眼扫过去,谁也读不动。
于是大家都会去写计算字段转换格式:
IF [Value] >= 1000000000 THEN STR(ROUND([Value]/1000000000, 1)) + "B"
ELSEIF [Value] >= 1000000 THEN STR(ROUND([Value]/1000000000, 1)) + "M"
ELSEIF [Value] >= 1000 THEN STR(ROUND([Value]/1000, 1)) + "K"
ELSE STR([Value])
END但代价是这列变成字符串了,而且每一行都得算一遍。本来是要显示一个名片大小的文本框,硬把一个格式问题,换成了数据建模问题。
02 隐藏的 [scale]方式
[scale] 就是个丢进自定义数字格式串里的令牌。说白了就这么简单。在格式面板里把它打上去,整列的行为就全变了。
格式串满打满算七个字符:
0.0[scale]套上之后,同一个字段在不同行长出不同的后缀:
12 → 12.0
1,000 → 1.0k
1,500,000 → 1.5M
2,300,000,000 → 2.3G
0.004 → 4.0m没有计算字段,没有 IF 阶梯,没有字符串,底层还是个真数字。
03 自适应才是重点
Tableau 格式面板里本来就有"显示单位"那个 K/M/B 下拉,确实好用,但它是整列一套规则:你设成百万,每个值都先除以一百万,再盖个 M 章。对 47.2M 没问题,可那个真实值只有 900 的行就尴尬了,它显示成 0.0M。
- [scale] = 每个值一条规则
同一列里的 900、90 万、900 亿,[scale] 会挨个问"什么单位适合你",然后给不一样的答案。这就是自适应,也是混合量级的列终于能看着正常的原因。
04 国际单位(SI)
你大概也注意到了,十亿显示成 2.3G 而不是 2.3B。[scale] 用的是国际单位(SI)前缀,就是物理学家和工程师那套:
- 大数方向,k 表示千,M 表示百万,G 是十亿,T 是万亿,再往上还有几级更罕见的。
- 小数方向,m 是毫(千分之一),µ 是微,纳秒微伏都罩得住,全是一等公民。
有两点得记一下。
- 大小写是两种单位。M 是兆(百万),m 是毫(千分之一),别混。
- 超过 10 的 24 次方(就是 1 后面跟 24 个零),桌面端会乖乖退回方括号数字,比如 [9],不会硬造个谁也不认识的字母。
05 速度快是优势
这一点最能让搞工程的人服气。刚才那个 calc 写法,每个 IF/STR() 都是 Tableau 要对视图里每个标记求值的表达式,把查询撑大,还产出字符串,而且只修好了一个地方。你给文本表写了,轴标签和工具提示里还是 2300000000,得再写一份。
[scale] 走的是格式化层,不是数据层。数字一路都是数字,排序、连续轴、聚合都照常正确,变的只是外观。它走的是标准格式化器的路子,轴刻度、工具提示,再加上文本标签和交叉表单元格,凡是画数字的地方全部免费用上。一个令牌,所有表面,不用逐视图去重接线。
06 几个用得上的场景
- 募资温度计:个人捐款 50 块、大金主 250 万,再到总计 14 亿,全塞一张表里。显示单位你得挑个输家,[scale] 每份都按自己的量级读得清。
- 物联网(IoT)遥测:从 4.0m 瓦到 2.3G 瓦跨零点,[scale] 两端都兜得住。
- 云成本表:存储按字节、花费按美元,请求数到十亿级,一表三量级,[scale] 把 1073741824 变成安安静静的 1.1G。
- 多租户 KPI 磁贴:初创月活 4.2k,企业 88.0M,硬编码显示单位只对一段管用,[scale] 同一块磁贴各租户都渲染对。
07 我自己验证了一遍
光看文章不踏实,我造了 18 行测试数据(名称、数值两列,正负、零、亚 1、跨量级都覆盖),在 Tableau 文本表里套 0.0[scale] 跑了一遍。测试数据大概这样(CSV 两列,方便你复现):
名称,数值
万亿正,2300000000000
十亿正,2300000000
百万正,1500000
千正,1000
小百正_900,900
中百万_900k,900000
大十亿_900M,900000000
百正,450
个正,12
零,0
半_毫区间,0.5
毫正,0.004
微正,0.000002
千负,-1000
百万负,-1500000
十亿负,-2300000000
毫负,-0.004
微负,-0.000002下图是我实测的截图,18 行全部命中预期:
三个点确认到了。
- 我的 Tableau 版本原生就支持这个令牌,单段
0.0[scale]就够,负数负号 Tableau 自动补,不用写三段式。 - 格式走渲染层,聚合列直接生效,数字本体还是真数字。
- 最爽的是同列 900、900.0k、900.0M 各自选单位,但只保留 1 位小数。
转载(少墙,国内能开): https://www.flerlagetwins.com/2026/08/tableau-number-formatting-one-token-to.html
08 特别提示
- 版本要求:[scale] 是 2026 年大会才放出来的功能,老版本会把
[scale]当字面文本显示,升级一下就好。 - 它是 SI 字母不是 Tableau 字母,十亿是 G 不是 B,受众要是认 B,先打个招呼或者加个图例。
- 感觉目前还是实验性功能,使用还是有一定限制的,比如保留 1 位小数,单位不是常规单位,没有中文显示单位的问题。
No comments yet