AWS Quicksight中按ID唯一聚合Runtime并求和的实现问题
AWS QuickSight按ID去重Runtime求和方案
你的需求是对每个ID的唯一Runtime值去重后求和(最终得到38),同时生成仅在每个ID首行显示Runtime的表格,下面是具体解决步骤:
1. 生成目标表格效果
创建计算字段RuntimeUniqueSum,输入以下公式:
ifelse( rowNumberOver([{ID}], [], PRE_AGG) = 1, {Runtime}, null )
这个公式会给每个ID下的行编序号,只保留第一行的Runtime值,其余行显示null,完全匹配你想要的表格样式。
2. 计算去重后的总和(KPI展示)
有两种简单方法得到总和38:
方法一:基于已创建的RuntimeUniqueSum
直接创建计算字段TotalUniqueRuntime:
sum({RuntimeUniqueSum})
把这个字段拖入KPI组件,就能直接显示38。
方法二:一步到位的嵌套计算
如果不想创建中间字段,直接用下面的公式生成总和:
sumOver( firstValue({Runtime}, [{ID}], PRE_AGG), [], PRE_AGG )
firstValue会提取每个ID对应的唯一Runtime值,sumOver空窗口参数会对所有ID的唯一值求和,直接得到38。
为什么你之前的公式不对?
sumOver({Runtime}, [{ID}], PRE_AGG):会把每个ID下的所有重复Runtime加起来(比如ID1的10会被加3次得到30),不是去重后的结果。sumOver(minOver({Runtime}, [{ID}], PRE_AGG), [], PRE_AGG):逻辑本身是对的,但如果你的可视化配置里把这个字段放在了行维度中,会重复显示每个ID的计算值,导致看起来结果不对,直接用KPI组件单独展示这个字段就能得到正确总和。
内容的提问来源于stack exchange,提问作者MarkusH
相关产品推荐
相关产品推荐

