QuickSight左连接后行重复致原价求和异常,如何筛选唯一值?
在QuickSight中解决左连接后重复行导致的求和错误问题
当然可以解决,核心思路是确保表A中的每一行原始数据在求和时只被计算一次,以下是几种可行的实现方式:
用预聚合函数避免重复计算
不需要修改数据集的连接关系,直接在计算总和时使用QuickSight的sumOver函数做层级聚合。创建计算字段时写:sumOver({original price}, [accounts, products], PRE_AGG)这个函数会先按
accounts和products分组(对应表A的唯一行),对每组的原始价格只取一次值,再进行整体求和,彻底避免重复匹配带来的翻倍问题。通过筛选器保留唯一原始行
如果不需要保留表B中同一(accounts, products)对应的多条数据,可以在连接后的数据集里添加筛选逻辑:- 创建计算字段
row_rank,用来给每个(accounts, products)分组内的行排名:rank({updated price}, [accounts, products], ASC) - 添加筛选器,只保留
row_rank = 1的行。
这样每个表A的原始行只会保留一条匹配结果,求和时自然不会重复计算。
- 创建计算字段
调整连接键从根源减少重复行
不要仅用account做连接键,改用accounts + products(即表A的accounts和products对应表B的account和product)作为连接条件。这样表A的每一行只会匹配表B中对应账户和产品的行,从根源上避免同一个原始行被多次匹配。
内容的提问来源于stack exchange,提问作者user14140366
相关产品推荐
相关产品推荐

