如何在Power BI中按团队按周计算MS Forms问卷特定问题的平均值?
按团队按周计算特定问题满意度平均值的Power BI解决方案
一、确认必要数据字段
确保你的Power BI数据集包含以下核心字段:
Team:员工所属团队名称SubmitDate:问卷提交日期SatisfactionScore:特定满意度问题的得分(需为数值类型,如1-5分)
二、生成周分组字段
需要将提交日期按周聚合,推荐用周起始日期作为分组依据,避免跨年度周数混乱:
方式1:Power Query中新增列
在Power Query编辑器中操作:
- 选中
SubmitDate列 - 点击「添加列」→「日期」→「周」→「开始日期」
- 自定义周起始(比如周一),生成
WeekStart字段,公式示例:
Date.StartOfWeek([SubmitDate], Day.Monday)
方式2:DAX创建计算列
如果无需修改数据源,直接在数据模型中创建计算列:
WeekStart = DATE(YEAR([SubmitDate]), 1, 1) + WEEKNUM([SubmitDate], 2) * 7 - 7
(参数2代表周一为周起始,改为1则是周日)
三、创建周均得分度量值
基础版(自动适配团队+周上下文)
直接利用Power BI的上下文筛选,用AVERAGE配合ALLEXCEPT锁定分组维度:
特定问题周均得分 = CALCULATE( AVERAGE('问卷数据'[SatisfactionScore]), ALLEXCEPT('问卷数据', '问卷数据'[Team], '问卷数据'[WeekStart]) )
进阶版(过滤空值/无效数据)
如果存在未填写的得分(空值),添加过滤条件排除无效数据:
特定问题周均得分 = CALCULATE( AVERAGE('问卷数据'[SatisfactionScore]), ALLEXCEPT('问卷数据', '问卷数据'[Team], '问卷数据'[WeekStart]), NOT(ISBLANK('问卷数据'[SatisfactionScore])) )
修正AVERAGEX的正确用法
如果你坚持用AVERAGEX,需明确迭代的表范围,示例:
特定问题周均得分_AVERAGEX = CALCULATE( AVERAGEX( VALUES('问卷数据'[SubmitDate]), '问卷数据'[SatisfactionScore] ), ALLEXCEPT('问卷数据', '问卷数据'[Team], '问卷数据'[WeekStart]) )
注:对于简单平均值场景,AVERAGE比AVERAGEX更高效,无需刻意使用迭代函数。
四、可视化呈现
将Team拖到可视化组件的行/列区域,WeekStart拖到轴区域,再把上述度量值拖到值区域,即可生成每个团队每周的满意度平均得分报表。
内容的提问来源于stack exchange,提问作者Nietzsche
相关产品推荐
相关产品推荐

