在Tableau实现按年份动态累加各州sum(casualties)并排序Top10
问题描述
- 数据源:美国枪击事件数据库,包含事件发生州、日期、**总伤亡数(total casualties)**三列,时间范围覆盖1924-2022年
- 核心需求:在Tableau制作仪表盘,以年份作为可切换控件,切换至某年份时,图表自动展示1924年至该年份累计伤亡数排名前十的州(例:切换到1980年,显示1924-1980年累计伤亡Top10州;切换到1981年则更新为对应时段的Top10)
- 现有尝试与疑问:曾用Python为每一年生成单独列,横向查看各州伤亡总数随年份的变化,不确定这种分组年份列的方式是否为实现需求的最优方案
- 补充说明:希望通过年份筛选器切换,动态展示1924至当前选中年份枪击事件总数Top10的州
最优实现方案(无需预处理数据)
你之前用Python生成年份列的方法并非最优解,会造成数据冗余、后续维护繁琐,Tableau原生功能就能直接实现需求,具体步骤如下:
提取年份字段
将「日期」字段拖入数据窗格,右键选择提取年份生成新字段年份;也可直接创建计算字段,公式为:YEAR([日期])创建目标年份参数
右键数据窗格→创建参数,设置:- 数据类型:整数
- 允许值:选择「列表」手动输入1924-2022的所有年份,或选择「范围」设置最小值1924、最大值2022
- 参数命名为
目标年份
编写累计伤亡计算字段
创建计算字段截至目标年份的累计伤亡,公式:SUM(IF YEAR([日期]) <= [目标年份] THEN [total casualties] ELSE 0 END)该字段会自动统计所有年份≤选中目标年份的伤亡总和
设置Top10筛选规则
- 将「事件发生州」拖至行,
截至目标年份的累计伤亡拖至列 - 右键行上的「事件发生州」→筛选器→顶部,选择「按字段」,设置为「顶部10」,依据选择
截至目标年份的累计伤亡的「总和」
- 将「事件发生州」拖至行,
添加年份切换控件
将目标年份参数拖至仪表盘控件区域,选择「滑块」或「下拉列表」样式,切换年份时图表会自动更新为对应时段的累计伤亡Top10州可选优化
- 将图表类型改为条形图,更直观展示排名
- 给累计伤亡字段添加标签,显示具体数值
- 设置图表排序规则为按累计伤亡降序排列
内容的提问来源于stack exchange,提问作者Griffin McKnight
相关产品推荐
相关产品推荐

