在使用 Tableau 创建计算字段时,您可能会遇到一个错误,说您
Cannot mix aggregate and non-aggregate arguments
。
这个错误发生在你试图计算一个聚合字段和一个非聚合字段之间的值时。
聚合字段是一个特定字段的编译或汇总的值。例如,如果你有一个
Price
变量,聚合字段可能是
Price
变量的行数的和、平均、最大、最小或计数。
非聚合字段是字段的扩展数据,它是构成整个
Price
变量的行数。
为了解决Tableau中的这个错误,你需要使计算只发生在所有聚合字段或所有非聚合字段之间。
让我们看看Tableau中这个错误的一个例子:
你可以使用以下数据集来配合本教程:
上面的CSV文件包含一家销售办公用品的公司的虚构销售数据。你可以将该数据集作为 文本文件 加载到Tableau中。
City
假设你的任务是为每个
Average Total Sales per Item
。
你可以用以下公式创建一个计算字段:
[Total Sales] / COUNTD([Item])
[Total Sales]
变量是一个非聚合字段(返回许多值),而COUNTD([Item])
变量是一个聚合字段(返回一个值)。
Tableau无法计算出上述公式的结果,所以它抛出了如下所示的错误:
Tableau不能混合聚合字段和非聚合字段的错误
(tableau-cannot-mix-aggregate-non-aggregate-error.png)
在Tableau中,有很多方法可以解决这个错误,但是在这个案例中,我们想计算Average Total Sales per Item
,所以将Total Sales
变量的值相加就可以了:
SUM([Total Sales]) / COUNTD([Item])
为了测试这个字段,将City
变量拖到Columns
架子上,将Average Total Sales per Item
变量拖到Rows
架子上。
你应该看到Tableau生成的以下图表
Tableau计算聚合字段
(tableau-calculating-aggregated-fields.png)
根据你想要创建的计算,有很多方法可以解决这个错误。
在上面的例子中,所有使用的字段都是聚合的。
但是你也可以不聚合所有字段,如下图所示:
[Total Sales] / SUM([Units]) 'ERROR'
[Total Sales] / [Units] 'CORRECT'
Total Sales
在另一种情况下,你可能想计算只有一个Item
的总和,像这样:
IF [Item] = "Binder"
THEN SUM([Total Sales])
但是这并不奏效,因为你将一个聚合字段SUM([Total Sales])
和一个非聚合字段Item
混合在一起。Tableau会以Cannot mix aggregate and non-aggregate comparisons or results in 'IF' expressions
作为回应。
这个错误可以通过在IF..THEN
语句中使用非聚合字段来解决,然后在IF
语句的返回值上使用SUM()
:
IF [Item] = "Binder"
THEN [Total Sales]
END )
要查看更多关于修复Cannot mix aggregate and non-aggregate arguments
的例子,您可以查看这篇Tableau 社区博文。你可以看到其他Tableau用户如何解决这个错误。
我希望这个教程能帮助你解决这个错误🙏