DAX函数LASTNONBLANK作用于字符串时返回空白问题排查
问题原因
- 表关系缺失或配置错误:当前公式没有显式指定SKU匹配规则,若Table1与Table2未以SKU为键建立激活的一对多/一对一关系,CALCULATE无法筛选Table1中对应SKU的记录,空筛选上下文下LASTNONBLANK直接返回空白。
- SKU列匹配异常:两表SKU列数据类型不一致(如一列为文本、一列为数值),或SKU值存在不可见的首尾空格、全半角字符差异,会导致匹配失败,筛选出的Table1记录为空。
- LASTNONBLANK参数逻辑歧义:第二个参数填写
0的逻辑容易出现异常,当筛选后Table1对应SKU的Category列没有符合「表达式计算非空」规则的记录时,就会返回空白。
解决方法
前置排查步骤
- 统一将两表的SKU列设置为文本类型,使用
TRIM()、CLEAN()函数预处理SKU值,清理隐藏字符。 - 在模型视图中确认Table1与Table2已以SKU为键建立激活的一对多关系,Table1为关系的一端。
公式优化方案
方案1(保留LASTNONBLANK逻辑)
显式指定筛选规则,避免上下文干扰:
Category = CALCULATE( LASTNONBLANK(Table1[Category], 1), ALLEXCEPT(Table1, Table1[SKU]) )
将第二个参数替换为1消除歧义,用ALLEXCEPT强制仅按SKU筛选Table1记录。
方案2(更稳定的逆字母序取值方案)
文本类型的MAXX天然按逆字母序返回最大值,完全匹配你的取值需求,逻辑更可控:
Category = CALCULATE( MAXX(VALUES(Table1[Category]), Table1[Category]), RELATEDTABLE(Table1) )
该方案不受LASTNONBLANK的默认排序规则影响,不会出现无理由返回空白的问题。
内容的提问来源于stack exchange,提问作者carvalh3
相关产品推荐
相关产品推荐

