3

我的数据集有一个 {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 中执行此操作。任何解决方案将不胜感激。

4

2 回答 2

5

还有另一种类型的计算称为级别感知聚合。语法与表格计算非常相似(您使用相同的函数),但您不需要在视觉对象中使用“分组依据”字段。结果不是聚合值 - 它类似于在行级别连接回您的数据的子查询。在 Invoice ID 级别对数据进行重复数据删除的一种方法是获取每个 Invoice 的最大 PartNo,并返回这些行的成本,而不是其他行。它可能看起来像这样:

ifelse( maxOver(PartNo, [Invoice No] , PRE_AGG) = PartNo, cost, null)

然后将其拖到您的视觉中并求和。

maxOver 内部缺少聚合以及最后添加的 PRE_AGG 将其变成了 Level Aware Aggregation。

可以查看此博客文章以了解有关 LAA 的更多信息:

于 2020-07-23T23:20:07.823 回答
1

我可以通过使用计算字段来让它在表格中工作。

我正在使用的计算是

sumOver(max(cost),[{Invoice No}])

这基本上说明,按成本字段中的{Invoice No}一个值分组(是任意的,因为它们都是相同的值)。然后对结果求和。maxmax

不幸的是,这似乎不适用于 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

然后在表格中显示该值,包括总和 田间井 发票成本表

于 2019-07-30T15:31:42.520 回答