AWS Quicksight 如何通过计算字段实现按Column A分组取Column B第二条记录
实现方案
完全可以通过计算字段实现,核心是借助窗口函数给分组内的行做编号,再筛选编号为2的记录即可,通用实现逻辑如下:
步骤1:给分组内的行生成序号
使用ROW_NUMBER()窗口函数,按Column A分组,保持原数据集的行顺序排序(如果你有明确的排序规则,比如按时间、数值大小排序,替换ORDER BY后的字段即可),新增行号计算字段:
row_num = ROW_NUMBER() OVER (PARTITION BY `Column A` ORDER BY (SELECT 1))
如果是Tableau等不支持直接写SQL窗口函数的BI工具,可以用内置的INDEX()函数,设置计算依据为Column A分区即可得到分组内的行号。
步骤2:提取每组第二条记录
方案A:直接筛选
直接过滤row_num = 2(或INDEX()=2)的行,输出对应的Column B值即可得到你要的结果。
方案B:新增计算字段存储每组第二条值
如果需要在原表所有行中都显示对应分组的第二条值,可以结合条件判断和窗口聚合实现:
group_second_value = MAX( IF(ROW_NUMBER() OVER (PARTITION BY `Column A` ORDER BY (SELECT 1)) = 2, `Column B`, NULL) ) OVER (PARTITION BY `Column A`)
补充说明
你之前尝试的FIRST_VALUE只能取分组首行,目前绝大多数工具没有内置的SECOND_VALUE函数,用行号筛选的方案兼容性更高,所有支持窗口函数的SQL数据库、BI分析工具都可以直接套用。
内容的提问来源于stack exchange,提问作者dwinnbrown
相关产品推荐
相关产品推荐

