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

Power BI中DAX计算调研满意度同比增长的错误排查求助

调研满意度同比计算DAX公式问题排查与修正

问题背景

数据仓库结构:

  • 包含4张表:3个维度表(DIM_DATE、DIM_QUESTION_ANSWER、DIM_SURVEY_RESPONDENT)通过代理键关联,事实表FACT_SURVEY_RESPONSES存储调研结果,受访者答案取值1-5(差到优)。
  • 满意度计算逻辑:(平均分≥4的受访者数量) ÷ (总受访者数量),已通过AVRSCOREALLCOUNT公式实现。
  • 问题:使用SAMEPERIODLASTYEAR编写的同比满意度公式AVRSCOREALLCOUNT-LASTYEAR返回结果错误,与当前年度满意度值一致,怀疑是DIM_DATE未直接关联DIM_QUESTION_ANSWER导致。

问题排查

原公式的核心问题:

  1. 受访者集合(MTABLE)基于当前上下文生成,未应用去年日期筛选,导致后续计算仍使用当前年度的受访者数据。
  2. CALCULATE中的SAMEPERIODLASTYEAR仅在计算平均分阶段筛选日期,但受访者集合未同步过滤,逻辑矛盾——部分受访者去年无数据时平均分空值,但分母还是当前总受访者数,同时无法正确筛选出去年的有效调研记录。
  3. 日期筛选未正确传递到事实表:DIM_DATE需通过FACT_SURVEY_RESPONSES的日期外键关联,原公式未利用这种关联传递筛选上下文。

修正后的DAX公式

1. 重构基础满意度度量(复用逻辑)

满意度 = 
VAR 受访者平均分 = 
    SUMMARIZE(
        FACT_SURVEY_RESPONSES,
        FACT_SURVEY_RESPONSES[RESPONDENT_SRGT],
        "平均分", CALCULATE(AVERAGE(DIM_QUESTION_ANSWER[ANSWER_VALUE]))
    )
VAR 达标受访者数 = COUNTROWS(FILTER(受访者平均分, [平均分] >= 4))
VAR 总受访者数 = COUNTROWS(受访者平均分)
RETURN
    IF(NOT ISBLANK(总受访者数), DIVIDE(达标受访者数, 总受访者数))

2. 去年同期满意度度量

去年同期满意度 = 
CALCULATE(
    [满意度],
    SAMEPERIODLASTYEAR(DIM_DATE[Date])
)

3. 满意度同比增长率度量

满意度同比增长率 = 
VAR 当前满意度 = [满意度]
VAR 去年满意度 = [去年同期满意度]
RETURN
    IF(NOT ISBLANK(去年满意度) && NOT ISBLANK(当前满意度),
        DIVIDE(当前满意度 - 去年满意度, 去年满意度)
    )

修正说明

  • 复用基础度量[满意度],避免重复代码,保证逻辑一致性。
  • 通过CALCULATE将SAMEPERIODLASTYEAR的日期筛选应用到整个满意度计算流程,确保受访者集合和对应的答案数据都基于去年同期上下文。
  • 需确保DIM_DATE与FACT_SURVEY_RESPONSES存在正确的日期关联(事实表日期外键关联DIM_DATE主键),保证日期筛选能正确传递到事实表,筛选出去年的有效调研记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:27:26