You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX技术求助:按每22吨计数1次的公式结果异常排查

解决DAX中按22吨整数计数的问题

我来帮你排查下当前公式的问题,顺便给出更可靠的解决方案:

先看你当前公式的几个问题点:

  • 重复的条件判断:||两边都是SOP_LOM2_Deliveries[Mode] = "Truck",这属于冗余代码,虽然不会直接导致错误,但没必要重复写。
  • 多余的FLOOR(22,1):22本身就是整数,用FLOOR处理后结果还是22,完全可以直接写22。
  • ROUNDDOWN的参数错误:你第二个参数用了1,这会让结果保留1位小数(比如43吨的话,43/22≈1.95,ROUNDDOWN后会得到1.9),但你需要的是整数计数,这里应该把参数设为0,让结果向下取整到整数。

修正后的DAX公式

针对你的需求,我们可以简化并修正公式,这里提供两种等价的写法,你可以选自己习惯的:

写法1:用ROUNDDOWN(明确向下取整)

Available to Ship = 
IF (
    SOP_LOM2_Deliveries[Mode] = "Truck",
    ROUNDDOWN ( SOP_LOM2_Deliveries[Tons] / 22, 0 ),
    0 // 这里可以根据需求设置非Truck模式时的返回值,比如空或0
)

写法2:用INT函数(对正数来说等价于向下取整)

Available to Ship = 
IF (
    SOP_LOM2_Deliveries[Mode] = "Truck",
    INT ( SOP_LOM2_Deliveries[Tons] / 22 ),
    0
)

测试验证

针对你给出的案例:

  • 当吨数为44时:44/22=2,两种写法都会返回2,符合需求。
  • 当吨数为43时:43/22≈1.954,ROUNDDOWN到0位或INT处理后都会返回1,符合需求。
  • 当吨数为21时:返回0,符合“每满22吨计数1次”的规则。

如果你的数据中存在吨数为0或者负数的情况,可以再额外加个判断,确保结果不小于0:

Available to Ship = 
IF (
    SOP_LOM2_Deliveries[Mode] = "Truck",
    MAX ( ROUNDDOWN ( SOP_LOM2_Deliveries[Tons] / 22, 0 ), 0 ),
    0
)

内容的提问来源于stack exchange,提问作者Shaydra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:33:11