Power BI DAX四分位数计算如何添加campaign等自定义过滤条件
问题根因
你当前使用的是预计算的计算列,计算列的结果在数据刷新时就已经固定,不会响应报表端的筛选器交互,也无法实现按指定字段分组计算。
解决方案
方案1:固定分组计算列(适合分组维度固定的场景)
如果需要按固定维度(如Campaing)分组,每组单独计算四分位数,可使用以下计算列代码:
Quantile_按分组计算 = VAR current_tickets = TBL_CUARTIL[tickets] // ALLEXCEPT后参数为分组维度,可根据需要新增如management、group等字段 VAR group_range = ALLEXCEPT(TBL_CUARTIL, TBL_CUARTIL[Campaing]) VAR p25 = PERCENTILE.EXC(TBL_CUARTIL[tickets], 0.25, group_range) VAR p50 = PERCENTILE.EXC(TBL_CUARTIL[tickets], 0.5, group_range) VAR p75 = PERCENTILE.EXC(TBL_CUARTIL[tickets], 0.75, group_range) RETURN SWITCH( TRUE(), current_tickets <= p25, "Q4", current_tickets <= p50, "Q3", current_tickets <= p75, "Q2", "Q1" )
特点:数据刷新时自动计算,分组维度固定,适合不需要动态调整筛选条件的场景。
方案2:动态响应筛选的度量值(适合需要自定义筛选的场景)
如果需要随报表筛选器(如按Campaing、supervisor筛选)动态调整计算范围,使用度量值实现:
Quantile_动态计算 = VAR current_tickets = SELECTEDVALUE(TBL_CUARTIL[tickets]) // 自动获取当前报表筛选器选中的所有数据范围 VAR filter_range = ALLSELECTED(TBL_CUARTIL) VAR p25 = CALCULATE(PERCENTILE.EXC(TBL_CUARTIL[tickets], 0.25), filter_range) VAR p50 = CALCULATE(PERCENTILE.EXC(TBL_CUARTIL[tickets], 0.5), filter_range) VAR p75 = CALCULATE(PERCENTILE.EXC(TBL_CUARTIL[tickets], 0.75), filter_range) RETURN SWITCH( TRUE(), ISBLANK(current_tickets), BLANK(), current_tickets <= p25, "Q4", current_tickets <= p50, "Q3", current_tickets <= p75, "Q2", "Q1" )
用法:将该度量值与算子ID、姓名、tickets等字段共同放入表格视觉对象中,报表端的任意筛选条件都会自动生效,重新计算当前筛选范围内的四分位数。
注意事项
- PERCENTILE.EXC函数要求计算范围内的数据行数至少大于对应百分位的倒数,如计算0.25分位至少需要4行数据,否则会返回空值,可根据需要新增IFERROR逻辑处理异常。
- 若需要调整固定分组的维度,只需修改方案1中ALLEXCEPT函数内的字段列表即可。
内容的提问来源于stack exchange,提问作者Agal
相关产品推荐
相关产品推荐

