You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tableau中如何基于行号生成适配国家筛选的0-100%分布条形图

Tableau 动态0-100%分布图表实现方案

你原SQL中预计算的rn是基于全量数据生成的静态值,无法响应国家筛选后的动态重排、归一化需求,所有排序、占比计算需要放在Tableau内通过表计算实现,才能保证筛选后结果自动适配。

1. 调整数据源(可选,推荐操作)

删除SQL中写死的行号逻辑,避免静态字段干扰,修改后的SQL如下:

SELECT
  article_number,
  country,
  SUM(sold_items) as si,
  SUM(sales) as sales
FROM data.sales
WHERE sales.order_date between '2021-01-01' and '2021-12-31'
GROUP BY 2, 3

如果不想修改原有SQL,后续操作直接弃用原rn字段即可。

2. 新建计算字段

在左侧字段面板右键选择「创建计算字段」,依次新建3个字段:

  • 动态排名:基于当前筛选结果,按销售额从小到大给每条(商品+国家)记录生成唯一排名,替代原静态rn
    RANK_UNIQUE(SUM([sales]), 'asc')
    
  • 总记录数:实时统计当前筛选条件下的有效记录总条数,为横轴归一化提供基数
    WINDOW_COUNT(SUM([sales]))
    
  • 横轴分布占比:将绝对排名归一到0-1区间,实现无论记录数多少,横轴范围始终固定为0%-100%
    ([动态排名] - 1) / ([总记录数] - 1)
    

3. 视图配置

  1. 将country字段拖入筛选器卡片,配置你需要的筛选交互样式(例如下拉多选、单选列表)。普通维度筛选优先级高于表计算,筛选动作会自动触发后续所有分布计算重算,完全满足动态适配要求。
  2. 将article_number、country两个字段拖入标记卡的「详细信息」,保证视图粒度和数据源聚合粒度一致,即单条标记对应一个商品+国家的销售记录。
  3. 将横轴分布占比拖入列功能区,将SUM([sales])拖入行功能区,标记类型选择「条形图」。
  4. 配置表计算规则:右键点击列功能区的横轴分布占比,选择「计算依据」-「高级」,在弹窗中将article_number、country全部加入「寻址」栏,排序规则选择按SUM([sales])升序,确认保存。
  5. 右键点击列轴的横轴分布占比,选择「设置格式」,将数字格式调整为百分比(0位小数),此时横轴刻度会自动展示为0%到100%。
  6. (可选优化)如果单条条形过窄,可以调整条形宽度,或者将标记类型改为「线」,得到更顺滑的分布曲线。

效果校验

完成配置后,任意切换国家筛选条件,Tableau会自动完成:筛选后数据重排序、总记录数重算、横轴位置归一化,始终保持横轴从0%到100%覆盖全部筛选后记录,和参考效果完全一致。

内容的提问来源于stack exchange,提问作者Danyal Imran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:15:36