在Amazon QuickSight中对按Expense ID聚合的最大订单金额求和的实现方法
在Amazon QuickSight中对按Expense ID聚合的最大订单金额求和的实现方法
我之前也碰到过一模一样的问题,QuickSight的LAC(层级感知计算)函数确实有这个限制,不能直接在LAC里嵌套聚合函数,给你两个靠谱的解决办法:
首先,先确认你已经正确创建了每个Expense ID对应的最大订单金额计算字段,就像你现在的:
order_amount = max({Order Amount}, [{Expense ID}])
这个字段会为每一行数据返回对应Expense ID的最大订单金额,是后续求和的基础。
方法一:用LAC-A直接计算总和
新建一个计算字段,比如命名为total_max_order_sum,用下面的公式:
sum(order_amount, [{Expense ID}], AGGREGATED)
这个公式的逻辑是:先按Expense ID分组,取每个分组对应的order_amount(也就是该Expense ID的最大订单金额),然后对这些唯一的最大值求和。AGGREGATED参数告诉QuickSight这是在聚合后的层级上计算,不会触发你之前遇到的嵌套错误。
方法二:用sumOver结合去重求和
如果你更习惯用窗口函数,也可以新建计算字段用这个公式:
sumOver(distinct order_amount, [], PRE_AGG)
这里的distinct会先把重复的order_amount(同一个Expense ID的多行数据会返回相同值)去重,只保留每个Expense ID唯一的最大订单金额,然后sumOver在整个数据集范围内([]表示无分组)对这些值求和,PRE_AGG参数确保计算在数据聚合前完成,避免冲突。
怎么在KPI里用?
做好上面的计算字段后,直接把它拖到KPI视觉的「值」区域就行,KPI会自动展示计算好的总和,不用再额外设置聚合方式。
另外提醒一下,别再像之前那样嵌套聚合函数啦,QuickSight的LAC函数不支持这种操作,先把分组聚合的结果做成独立字段,再求和就没问题了。
备注:内容来源于stack exchange,提问作者pan325
相关产品推荐
相关产品推荐

