【问题标题】:(Quicksight) How to Sum Values only from Unique Fields(Quicksight) 如何仅对唯一字段中的值求和
【发布时间】:2019-07-23 19:17:28
【问题描述】:

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

【问题讨论】:

  • @John Doe 是您展示表格视觉效果或其他内容的最终目标吗?
  • @mjgpy3 让它显示正确的开始值会很好,然后也许我会在一段时间内计算所有独特成本的总和,但这不是我的问题我很关心。

标签: amazon-web-services duplicates calculated-field amazon-quicksight


【解决方案1】:

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

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

然后将其拖入您的视觉并总结它。

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

可以查看blog post 了解更多关于 LAA 的信息:

【讨论】:

  • 这几乎对我有用,除了 maxOver 似乎没有决胜局。在此示例中,如果 partNo 与 InvoiceNo 重复,您将在那里得到重复的成本。
  • 没关系!我能够通过将我的“PartNo”与左连接中的唯一整数(首先导致重复的列)连接起来来制造一个决胜局,这很有效。
【解决方案2】:

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

我使用的计算是

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

然后在表格中显示值,包括总和

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多