我的数据集中有一个{Invoice No}字段,我想对其总计。所有发票编号都是唯一的,并且具有一个成本值。但是,由于每个{Invoice No}中都有多个{Part No}字段,因此Quicksight将此成本乘以每个发票中存在的许多零件号,因此总和最终是我想要的实际值的倍数。表格视图如下所示:
{Invoice No} {Part No} {cost}
12345 001 10.12
12345 002 10.12
12345 003 10.12
如何仅使用每个{Invoice No}的第一个{cost}值,所以它不重复呢?我认为一种解决方法可能是创建一个新字段,该字段会忽略任何重复的发票编号,但是不知道如何在Quicksight中执行此操作。 任何解决方案将不胜感激。
答案 0 :(得分:1)
我可以通过使用计算所得的字段使它在表中工作。
我正在使用的计算方式是
sumOver(max(cost),[{Invoice No}])
基本上说,按{Invoice No}
分组在成本字段中取max
个值(max
是任意的,因为它们都是相同的值)。然后对结果求和。
不幸的是,这似乎不适用于KPI卡(这可能是仅显示一笔总和的最佳选择)。它产生了错误Table calculation attribute reference(s) are missing in field wells
。
为了测试这一点,我扩展了您的数据集
Invoice No,Part No,cost
12345,001,10.12
12345,002,10.12
12345,003,10.12
12346,001,42.42
12346,003,42.42
12347,0032,3.01
12348,0033,.04
答案 1 :(得分:1)
还有另一种类型的计算,称为“级别感知聚合”。语法与表计算非常相似(您使用相同的函数),但是您无需在视觉效果中使用“分组依据”字段。结果不是一个聚合值,它类似于一个子查询,该子查询在行级被重新连接到您的数据。在发票ID级别对数据进行重复数据删除的一种方法是,获取每个发票的最大部件号,并返回其他行的成本。看起来可能像这样:
ifelse( maxOver(PartNo, [Invoice No] , PRE_AGG) = PartNo, cost, null)
然后将其拖动到您的视觉效果中并对其求和。
maxOver内部缺乏聚合,最后还添加了PRE_AGG,将其转变为Level Aware聚合。
可以查看此blog post以获得有关LAA的更多信息: