Tableau详细级别问题我不知道为什么我的解决方案得到错误的结果

问题描述

  1. 一个订单可以包含多个产品类别中的多个项目。每个项目将在数据的不同行上,但是这些行将共享一个订单ID。查找包含办公用品的订单的平均销售价值。 Download data Excel sheet here

我的解决方案是:[生成计算字段]

SUM({ FIXED [Order ID]: MAX(IF [Product Category]='Office Supplies' THEN [Sales] ELSE 0 END)})/COUNTD(if [Product Category]='Office Supplies' THEN [Order ID] ELSE NULL end)

解决方案使用公式来获得如下答案:

SUM({ FIXED [Order ID]: MAX(IF [Product Category]='Office Supplies' THEN 1 ELSE 0 END)}*[Sales])/COUNTD(if [Product Category]='Office Supplies' THEN [Order ID] ELSE NULL end)

这两个得到的结果完全不同:

我的问题是,两种解决方案看起来是相同的,但结果却完全不同。请告诉 我为什么呢? 非常感谢,谢谢。

解决方法

它们是不同的。我建议将它们全部放在一张桌子中,以便您了解发生了什么。

从此开始:SUM({ FIXED [Order ID]: MAX(IF [Product Category]='Office Supplies' THEN 1 ELSE 0 END)}*[Sales])

任何包含办公用品的订单ID都将考虑所有销售额,而不仅仅是归因于办公用品的那些。带有办公用品的任何订单ID相对于其所有订单项都返回1,因此将其所有销售额都考虑在内。

此公式:SUM({ FIXED [Order ID]: MAX(IF [Product Category]='Office Supplies' THEN [Sales] ELSE 0 END)})

在产品类别为办公用品的情况下,将返回每个订单的最高销售额。

例如,如果他们以相同的订单ID购买10美元的办公用品,200美元的办公用品和500美元的食品,则顶部公式将返回710。底部公式将返回200。