请求:用DAX实现结果在SD±N区间的动态判断(自动刷新)
动态SD区间标签计算的DAX解决方案
1. 创建参数存储表
先建立一张用于保存均值(mean)和标准差(SD)的表,命名为参数表,包含两列:
参数名称:文本类型,填入"mean"和"SD"参数值:数值类型,填入对应的均值和标准差数值
你可以直接在Power BI中手动输入数据创建该表,后续修改参数值列的内容就能实现动态更新。
2. 编写DAX计算列/度量值
计算列版本(针对每行原始数据)
在你的原始数据表中添加计算列,公式如下:
SD区间标签 = VAR MeanVal = LOOKUPVALUE(参数表[参数值], 参数表[参数名称], "mean") VAR SDVal = LOOKUPVALUE(参数表[参数值], 参数表[参数名称], "SD") VAR ZScore = DIVIDE(原始数据表[数值列] - MeanVal, SDVal, 0) RETURN SWITCH( TRUE(), ZScore >= 3, "+3 SD", ZScore >= 2, "+2 SD", ZScore >= 1, "+1 SD", ZScore <= -3, "-3 SD", ZScore <= -2, "-2 SD", ZScore <= -1, "-1 SD", "均值区间" // 可根据需求调整默认标签 )
度量值版本(用于聚合场景)
如果需要在可视化中针对聚合后的数据计算区间,可使用度量值:
聚合SD区间标签 = VAR MeanVal = LOOKUPVALUE(参数表[参数值], 参数表[参数名称], "mean") VAR SDVal = LOOKUPVALUE(参数表[参数值], 参数表[参数名称], "SD") VAR CurrentValue = SUM(原始数据表[数值列]) VAR ZScore = DIVIDE(CurrentValue - MeanVal, SDVal, 0) RETURN SWITCH( TRUE(), ZScore >= 3, "+3 SD", ZScore >= 2, "+2 SD", ZScore >= 1, "+1 SD", ZScore <= -3, "-3 SD", ZScore <= -2, "-2 SD", ZScore <= -1, "-1 SD", "均值区间" )
3. 动态性说明
- 当你修改
参数表中的mean或SD数值时,DAX会自动重新计算所有关联的区间标签,无需手动刷新公式 - 使用
LOOKUPVALUE直接读取参数表的数值,确保了参数的动态引用
内容的提问来源于stack exchange,提问作者haze chan
相关产品推荐
相关产品推荐

