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

在Apache Superset中实现可筛选的多维堆叠百分比柱状图

解决Apache Superset堆叠占比柱状图支持动态筛选的方案

核心思路

把原宽表(Q9_1~Q9_7作为列)转成窄表结构,保留性别、居住区域等所有维度字段,这样既能生成每个问题的Yes/No占比堆叠柱,又能直接用新增字段做动态筛选。

具体操作步骤

1. 准备带筛选字段的原数据集

先把性别、居住区域等字段添加到你的原始数据集中,确保Superset能读取到这些字段(直接同步数据集即可)。

2. 用Unpivot转换宽表为窄表

进入堆叠柱状图的可视化编辑页,在数据源配置区找到「Transform」(部分版本叫「数据转换」)功能,选择Unpivot:

  • 选Q9_1到Q9_7这7列作为「Columns to unpivot」
  • 设置「Unpivot column name」为question(用来存Q9_1这类问题标识)
  • 设置「Value column name」为answer(用来存1/2的回答值)

转换后,数据集会变成每行对应一个问题的回答,同时保留性别、区域等所有原字段。

3. 配置图表的维度与指标

  • 维度:选question作为X轴(每个柱子对应一个问题),同时把性别、区域等字段拖到筛选器面板,用来做动态筛选
  • 指标:创建两个自定义指标计算占比:
    1. Yes占比:
      SUM(CASE WHEN answer = 1 THEN 1 ELSE 0 END) / COUNT(*)
      
      命名为Yes占比,格式设置为百分比
    2. No占比:
      SUM(CASE WHEN answer = 2 THEN 1 ELSE 0 END) / COUNT(*)
      
      命名为No占比,格式设置为百分比

4. 设置堆叠样式

在图表类型里选堆叠柱状图,把两个占比指标加到Y轴,question作为X轴。这时每个柱子会堆叠显示Yes/No的占比,筛选器里的性别、区域字段可以直接使用,筛选后图表会实时更新。

替代方案:动态SQL生成窄表

如果Unpivot转换不够灵活,用原生SQL生成带筛选字段的窄表:

SELECT
  gender,
  region, -- 替换成你的实际筛选字段
  UNNEST(ARRAY['Q9_1','Q9_2','Q9_3','Q9_4','Q9_5','Q9_6','Q9_7']) AS question,
  UNNEST(ARRAY[Q9_1,Q9_2,Q9_3,Q9_4,Q9_5,Q9_6,Q9_7]) AS answer
FROM your_original_table_name -- 替换成你的原数据集表名

基于这个SQL创建临时数据集,后续配置指标和图表样式和上面一致。这个方案支持更复杂的转换逻辑,同时保留所有筛选字段的动态筛选能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:55:19