Power BI中IF语句输出异常 自定义度量值全返回空白问题求助
问题原因
- 度量值未添加聚合逻辑:你当前编写的是DAX度量值,度量值运行依赖当前筛选上下文,直接引用列名不包裹聚合/行上下文函数时,DAX无法确定取列中哪一行的值,最终返回空白,你当前的写法实际是计算列的写法,不适用度量值场景。
- 日期解析风险:你使用
DATEVALUE解析日/月/年格式的字符串,如果你的Power BI/Excel的系统区域设置不支持日首的日期格式,会解析出错返回空值,最终导致判断逻辑失效。 - 边界值无覆盖:你的逻辑要求日期大于MidPoint、小于EndDate返回Last,小于MidPoint、大于StartDate返回Prior,但代码中用了>=、<=判断,同时等于MidPoint的场景没有被任何分支覆盖,也会返回空白。
- 维度表关联问题:如果
Dates表和GroupSalesData表没有建立正确的单方向日期关联,或者当前筛选上下文没有命中Dates表的起止日期值,也会导致判断条件无法触发。
可行解决方案
根据你的使用场景选择对应方案即可:
场景1:需要在GroupSalesData表中新增一列标识每行日期的分类(用计算列)
提前把所有日期字段的类型修改为日期类型,避免反复解析,之后新建计算列,代码如下:
WeeklyClass = VAR CurrentDate = 'GroupSalesData'[ShortDate] VAR MidPoint = 'GroupSalesData'[midpoint] // 取Dates表全局唯一的起止值 VAR StartDate = MAX('Dates'[Start]) VAR EndDate = MAX('Dates'[End]) RETURN SWITCH( TRUE(), CurrentDate > MidPoint && CurrentDate < EndDate, "Last", CurrentDate < MidPoint && CurrentDate > StartDate, "Prior", // 边界值可自定义返回内容,不需要可删除本行 "Other" )
场景2:需要用度量值动态根据当前筛选的日期返回分类
WeeklyClass = VAR CurrentDate = SELECTEDVALUE('GroupSalesData'[ShortDate]) VAR MidPoint = SELECTEDVALUE('GroupSalesData'[midpoint]) VAR StartDate = MAX('Dates'[Start]) VAR EndDate = MAX('Dates'[End]) RETURN SWITCH( TRUE(), CurrentDate > MidPoint && CurrentDate < EndDate, "Last", CurrentDate < MidPoint && CurrentDate > StartDate, "Prior", BLANK() )
如果你的三个基准日期是全局固定值,也可以直接写死在代码里,完全避免表关联导致的取值问题:
WeeklyClass = VAR CurrentDate = SELECTEDVALUE('GroupSalesData'[ShortDate]) VAR MidPoint = DATE(2021,8,25) VAR StartDate = DATE(2021,3,25) VAR EndDate = DATE(2022,1,25) RETURN SWITCH( TRUE(), CurrentDate > MidPoint && CurrentDate < EndDate, "Last", CurrentDate < MidPoint && CurrentDate > StartDate, "Prior", BLANK() )
内容的提问来源于stack exchange,提问作者Olayemi
相关产品推荐
相关产品推荐

