Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tableau api Tableau Public:创建计算字段的正确方法是什么?_Tableau Api - Fatal编程技术网

Tableau api Tableau Public:创建计算字段的正确方法是什么?

Tableau api Tableau Public:创建计算字段的正确方法是什么?,tableau-api,Tableau Api,我正在学习公共画面。使用版本2020.02.02 MAC版本 MWE;正在尝试创建新的计算字段 使用Samplestore数据集 在数据源中,将Orders表拖动到画布 在工作区中,将“利润”维度拖动到“列”工具架,将“类别”度量值拖动到“行”工具架 在数据窗格中,右键单击>创建>计算字段 在文本字段中输入“PositiveProfit” 在文本区域中输入表达式: 如果[利润]>0,则1否则0结束 我希望当利润大于0时,这个新计算字段的值应该是1。正确的? 嗯,我还有别的事要做。

我正在学习公共画面。使用版本2020.02.02 MAC版本 MWE;正在尝试创建新的计算字段

  • 使用Samplestore数据集

  • 在数据源中,将Orders表拖动到画布

  • 在工作区中,将“利润”维度拖动到“列”工具架,将“类别”度量值拖动到“行”工具架

  • 在数据窗格中,右键单击>创建>计算字段

  • 在文本字段中输入“PositiveProfit”

  • 在文本区域中输入表达式:

    如果[利润]>0,则1否则0结束

我希望当利润大于0时,这个新计算字段的值应该是1。正确的? 嗯,我还有别的事要做。例如,对于利润18451,正利润是1374


这背后的秘密是什么?任何教程都解释了这一点,因为您的计算字段正在聚合。有几种方法可以解决这个问题

方法1

最简单的方法是单击工具架中的PositiveProfit并使用下拉菜单将其从度量值更改为属性

方法2

另一种方法是将PositiveProfit固定到维度。固定计算也称为,或LoD计算

因此,在您的情况下,听起来您希望每个类别为0或1。这意味着您应该将您的PositiveProfit固定到类别。因此,创建一个名为PositiveProfitFixed的新计算字段:

{FIXED [Category] : MIN([PositiveProfit])}
然后将这个新的计算字段放在Columns工具架上,而不是PositiveProfit。 注意:我使用的是
MIN
,但您也可以使用
MAX
。两者都将返回相同的结果,因为公式将返回0或1,最小值为1,最大值为1(0也是如此)

结论


我上面提到的第一种方法比第二种方法要清楚得多。还有许多其他方法可以实现这一点。

您的公式中没有错误

实际上你已经计算出利润是正的多少倍。看到这个截图了吗

很明显,利润
$18451
是家具类
所有行的所有利润值之和。有
2121个
这样的行(记录)。在这2121份记录中,
1374份
是记录的利润为正,其余为负的情况,因此与损失有关

如果您只想计算一个字段,该字段只记录您显示的利润为正或负,请使用以下公式-

IF sum([Profit]) > 0 THEN 1 ELSE 0 END
这将为您提供如下输出

或者,如果要更改行中的层次结构,则

因此,总而言之,这不是tabbleau中
LOD
的适当用例。但是,您应该知道何时聚合,何时不聚合

另外,在tableau中,您可以自动对利润值进行排序,并可以创建这样的图表


将公式更改为:

SUM([Profit])>0
这是一个,因此将返回True或False。如果您需要它来返回1(例如,您可能希望对其执行另一个计算),请将该公式包装为INT,在INT中它将把True转换为1,将False转换为0

INT(SUM([Profit])>0)