QuickSight如何通过计算字段保留最大时间戳的去重记录
QuickSight按分组取最新记录实现方案
问题说明
现有数据集样例如下:
Ref Date Total Volume Total Completed Modificationtimestamp A "21/06/2022" 0 0 06/23/2022 2:37pm B "21/06/2022" 0 0 06/23/2022 2:37pm A "21/06/2022" 100 100 06/24/2022 2:41pm B "21/06/2022" 100 100 06/24/2022 2:41pm
需求为:针对Ref、Date两个字段取值完全相同的重复记录,仅返回Modificationtimestamp(修改时间戳)最大的最新记录,该需求可完全通过QuickSight原生计算字段实现,无需提前做ETL处理或编写自定义SQL。
具体操作步骤
- 校验字段类型
首先确认Modificationtimestamp字段在数据集内的格式为日期类型,如果当前识别为字符串,先在数据集编辑页修改字段类型为日期,避免后续排序计算出错。
- 校验字段类型
- 新建标记计算字段
新建计算字段,可命名为is_latest_record,写入以下计算逻辑:
逻辑说明:ifelse( maxOver({Modificationtimestamp}, [{Ref}, {Date}], PRE_AGG) = {Modificationtimestamp}, 1, 0 )maxOver是QuickSight提供的预聚合窗口函数,会按照Ref+Date的分组规则,计算每一组内的最大修改时间戳,将组内时间戳等于最大值的记录标记为1,其余历史旧记录标记为0。- 新建标记计算字段
- 配置筛选规则
将新建的is_latest_record字段添加到可视化的筛选器中,设置筛选条件为仅保留值等于1的记录即可。
- 配置筛选规则
配置完成后,以样例数据集为例,最终只会展示2022/6/24 14:41更新的A、B两条记录,完全匹配需求。
内容的提问来源于stack exchange,提问作者Abdul Qadir
相关产品推荐
相关产品推荐

