Tableau 计算字段 - 跨多个度量

Tableau Calculated Field - across multiple measures

我正在尝试取一组字段中的最小值,不包括 0。我对在 Tableau 中使用计算字段还很陌生。

我已经能够像这样链接 min 函数:
MIN(MIN(MIN([a],[b]), [c]), [d]) etc...

但是,我想不出一种方法来为我的每一个度量值过滤掉 0。我用 REGEXP_REPLACE 尝试了一些东西。我还尝试为值设置更大的 IF THEN,例如:

IF [a] > 0 THEN [a]  
IF [b] > 0 THEN [b]

这样新值就会被清空。但是,这也不起作用,因为我需要将所有这些都链接到这个计算字段中。计算这样的东西的功能方法是什么?假设我不能在 Tableau 之外修改数据,那么处理像这样修改多个字段的方法是什么?


期望的结果:
(伪代码)

given that a,b,c,d,e = 15,0,10,0,25  
Min_No0([a],[b],[c],[d],[e],...) = 10

好的,我能够成功完成以下操作:

MIN(MIN(IF [a] = 0 THEN 9999999 ELSE [a] END, 
IF [b] = 0 THEN 9999999 ELSE [b] END),
IF [c] = 0 THEN 9999999 ELSE [c] END)

通过链接 min 并在 min 函数中使用 if 语句。这不是我确定的最佳方式,但它确实有效。

这是一个在 [a] [b] 和 [c] 列之间查找 MIN() 的解决方案,不包括零值。

MIN(MIN(IF [a] !=0 THEN [a]
        ELSEIF [b] !=0 THEN [b]
        ELSEIF [c] !=0 THEN [c]
        END,

    IF [b] !=0 THEN [b]
        ELSEIF [c] !=0 THEN [c]
        ELSEIF [a] !=0 THEN [a]
        END),

    IF [c] !=0 THEN [c]
        ELSEIF [a] !=0 THEN [a]
        ELSEIF [b] !=0 THEN [b]
        END)

内部 MIN() 是比较 [a] 和 [b]。如果这些数字中的任何一个为零,它将替换另一个数字,前提是该数字也不等于零。外部 MIN() 将 [c] 与内部 MIN() 中较小的数字进行比较。

如果[a]、[b]、[c]都为零,那么结果当然是'Null'。