Power BI中基于RESPONDENT_SRGT分组计算平均值及达标计数需求
Power BI中用DAX实现对应SQL的统计需求
需求说明
基于通过ANSWER_SRGT关联的FACT_TABLE和DIM_ANSWER_TABLE,计算每个RESPONDENT_SRGT对应的VALUE平均值,再统计平均值≥4的受访者(RESPONDENT_SRGT)数量,对应你提供的SQL逻辑。
DAX实现方案
先确保在Power BI数据模型中,已建立FACT_TABLE[ANSWER_SRGT]与DIM_ANSWER_TABLE[ANSWER_SRGT]的关联关系,以下两种写法均可实现需求:
写法1:对应SQL子查询结构(直观易读)
统计平均值≥4的受访者数量 = VAR 受访者平均值分组 = SUMMARIZE( FACT_TABLE, FACT_TABLE[RESPONDENT_SRGT], "平均得分", AVERAGEX(RELATEDTABLE(DIM_ANSWER_TABLE), VALUE(DIM_ANSWER_TABLE[VALUE])) ) RETURN COUNTROWS(FILTER(受访者平均值分组, [平均得分] >= 4))
- 逻辑解释:
- 用
SUMMARIZE按RESPONDENT_SRGT分组,通过RELATEDTABLE关联到对应维度表的行,再用AVERAGEX计算每组的VALUE平均值(VALUE()函数对应SQL的Cast(..., as Float),处理文本类型的数值) - 过滤出平均值≥4的分组,统计行数即为符合条件的受访者数量
- 用
写法2:简洁版写法
统计平均值≥4的受访者数量 = COUNTROWS( FILTER( VALUES(FACT_TABLE[RESPONDENT_SRGT]), CALCULATE(AVERAGE(VALUE(DIM_ANSWER_TABLE[VALUE]))) >= 4 ) )
- 逻辑解释:
VALUES(FACT_TABLE[RESPONDENT_SRGT])获取所有不重复的受访者ID- 对每个受访者ID,用
CALCULATE计算其对应的VALUE平均值 - 过滤出平均值≥4的受访者,统计数量
注意事项
- 若
DIM_ANSWER_TABLE[VALUE]是文本格式,必须用VALUE()转换为数值类型,否则无法计算平均值 - 确保模型中的关联关系正确,否则
RELATEDTABLE或CALCULATE无法正确关联数据
内容的提问来源于stack exchange,提问作者Guissous Allaeddine
相关产品推荐
相关产品推荐

