如何处理Qualtrics多问题Excel数据,在Power BI中绘制分组条形图?
解决Power BI中Qualtrics多问题数据的分组条形图处理方案
针对Qualtrics导出的多问题带分子项的数据,解决先后unpivot关联混乱、全量unpivot数据膨胀的问题,按以下步骤操作:
核心思路
拆分单个问题的子项列单独处理,统一格式后合并,既能保证数据结构清晰,又能支持单问题筛选绘图。
具体操作步骤
1. 识别问题子项列
先梳理原始表的列名:比如Q1对应技能学习渠道,子项列是Q1_1、Q1_2...;Q2对应观点同意度,子项列是Q2_1、Q2_2...,确保每个问题的子项列有统一前缀。
2. 单问题数据处理(Power Query)
- 复制原始表,重命名为对应问题的表(比如"Q1_技能学习渠道")
- 在新表中,仅保留
Response ID和当前问题的所有子项列,删除其他列 - 选中
Response ID列,右键选择逆透视其他列,此时表会生成属性(子项名称)和值(用户选择/得分)两列 - 添加自定义列,命名为
问题名称,输入固定值(比如"技能学习渠道"),用于后续筛选 - 重复上述步骤,处理所有问题的表(如Q2_观点同意度)
3. 合并所有处理后的表
在Power Query中,选择所有处理好的单问题表,点击追加查询 → 追加多个查询,将所有表合并为一个总表。总表结构为:Response ID、问题名称、属性(子项)、值(结果)。
4. 绘制分组条形图
回到Power BI报表视图:
- 将
属性(子项)拖到X轴,值拖到Y轴,问题名称拖到筛选器 - 在筛选器中选择要展示的问题(比如"技能学习渠道"),即可生成目标样式的分组条形图;切换筛选器就能展示其他问题的图表,不会出现数据关联混乱或膨胀的问题
高效优化技巧
如果问题数量较多,可在Power Query中用M代码批量处理:
- 提取所有问题前缀(比如从列名中提取
Q1、Q2) - 循环生成每个问题的处理表,自动添加
问题名称并完成unpivot - 批量追加所有表
示例M代码片段(仅作参考):
let 原始数据 = 你的原始表, 列名 = Table.ColumnNames(原始数据), 问题前缀 = List.Distinct(List.Transform(列名, each Text.BeforeDelimiter(_, "_"))), 处理表列表 = List.Transform(问题前缀, (前缀) => let 筛选列 = List.Select(列名, each Text.StartsWith(_, prefix) or _ = "Response ID"), 筛选表 = Table.SelectColumns(原始数据, 筛选列), 逆透视 = Table.UnpivotOtherColumns(筛选表, {"Response ID"}, "子项", "值"), 添加问题名称 = Table.AddColumn(逆透视, "问题名称", each if prefix = "Q1" then "技能学习渠道" else if prefix = "Q2" then "观点同意度" else prefix) in 添加问题名称 ), 合并表 = Table.Combine(处理表列表) in 合并表
内容的提问来源于stack exchange,提问作者Pat
相关产品推荐
相关产品推荐

