DAX条件逻辑实现:按ID将指定状态替换为xx
DAX实现按ID替换状态逻辑
需求说明
给定包含id、case、status字段的表,需实现以下逻辑:
- 对每个
id分组,若组内同时存在status为xx和yy的记录 - 将该
id下所有status为yy的记录替换为xx,其他状态保持不变
示例数据
原始表
id case status 0 1 xx 0 555 yy 0 125 zz 2 87 yy 2 nn xx
期望结果
id case status 0 1 xx 0 555 xx 0 125 zz 2 87 xx 2 nn xx
DAX解决方案
在目标表中添加计算列,使用以下DAX表达式(将YourTable替换为实际表名):
New Status = VAR CurrentID = 'YourTable'[id] VAR HasXX = CALCULATE(COUNTROWS('YourTable'), 'YourTable'[id] = CurrentID, 'YourTable'[status] = "xx") > 0 VAR HasYY = CALCULATE(COUNTROWS('YourTable'), 'YourTable'[id] = CurrentID, 'YourTable'[status] = "yy") > 0 RETURN IF( HasXX && HasYY && 'YourTable'[status] = "yy", "xx", 'YourTable'[status] )
代码解释
CurrentID:获取当前行的id值,用于锁定当前分组HasXX:判断当前id分组内是否存在status为xx的记录HasYY:判断当前id分组内是否存在status为yy的记录- 最终逻辑:若当前分组同时包含
xx和yy,且当前行状态为yy,则返回xx;否则保留原状态值
内容的提问来源于stack exchange,提问作者Roberto92
相关产品推荐
相关产品推荐

