Power BI中DAX代码简化请求:批量配置Core Table类工位PPH值
简化DAX代码实现特定工位时段PPH值设置
直接简化版代码
PPH Value = VAR CurrentStation = SELECTEDVALUE('Table'[工位]) VAR CurrentHour = HOUR(SELECTEDVALUE('Table'[时间])) RETURN IF( STARTSWITH(CurrentStation, "Core Table"), SWITCH( CurrentHour, 4, 121, 6, 121, 10, 81, 14, 121, 17, 81, 21, 121, 162 ), BLANK() // 非目标工位可根据需求替换为对应值或保留空值 )
简化思路说明
- 工位判断简化:用
STARTSWITH函数直接匹配以"Core Table"开头的工位,替代原嵌套IF中可能存在的多个字符串匹配逻辑,更简洁且易于扩展。 - 时段逻辑优化:用
SWITCH替代多层嵌套IF,将各时段的PPH值映射平铺展示,逻辑一目了然,后续新增时段规则只需在SWITCH中追加行即可,无需重构嵌套结构。 - 变量复用:定义
CurrentStation和CurrentHour变量,避免重复调用SELECTEDVALUE函数,既提升代码可读性,也能优化查询性能。
进阶可维护版(规则可配置)
如果后续需要频繁调整时段或对应PPH值,建议将规则抽离到单独的配置表,避免反复修改DAX代码:
创建名为
时段PPH配置的表,包含两列:- 时段(24小时制):存储4、6、10、14、17、21等数值
- PPH值:存储对应时段的121、81等值
使用以下DAX代码:
PPH Value = VAR CurrentStation = SELECTEDVALUE('Table'[工位]) VAR CurrentHour = HOUR(SELECTEDVALUE('Table'[时间])) VAR ConfiguredPPH = LOOKUPVALUE( '时段PPH配置'[PPH值], '时段PPH配置'[时段(24小时制)], CurrentHour ) RETURN IF( STARTSWITH(CurrentStation, "Core Table"), COALESCE(ConfiguredPPH, 162), // 未找到配置时返回默认值162 BLANK() )
这种方案将规则配置与DAX逻辑分离,后续调整时段或PPH值只需修改配置表,无需改动代码,维护成本更低。
内容的提问来源于stack exchange,提问作者Samuelmra
相关产品推荐
相关产品推荐

