Power Query填充空值时跳过无值ID,求适用DAX公式
解决方案
可以通过DAX计算列实现需求,核心逻辑是按ID分组提取该组内的非空Status值,无有效值的ID保持空白。以下是两种可行的公式:
方法一:使用CALCULATE + 筛选
假设你的数据表名为YourTable,包含ID和Status列,创建计算列:
Status_Filled = VAR CurrentID = YourTable[ID] VAR GroupStatus = CALCULATE( MAX(YourTable[Status]), FILTER(YourTable, YourTable[ID] = CurrentID && YourTable[Status] <> BLANK()) ) RETURN IF(NOT(ISBLANK(GroupStatus)), GroupStatus, BLANK())
CurrentID捕获当前行的ID值GroupStatus筛选出同ID下的所有非空Status,用MAX提取唯一有效值(若每个ID仅对应一个非空Status,MAX/MIN/LASTNONBLANK结果一致)- 最后判断是否存在有效状态,存在则返回,否则留空
方法二:使用LOOKUPVALUE
如果每个ID最多对应一个非空Status,也可以用更简洁的LOOKUPVALUE:
Status_Filled = LOOKUPVALUE( YourTable[Status], YourTable[ID], YourTable[ID], YourTable[Status], "<>" & BLANK(), BLANK() )
- 按ID匹配,同时筛选非空的Status值,无匹配时返回空白
注意事项
- 确保
ID列的分组逻辑正确,若ID存在格式差异(如文本/数字)需先统一格式 - 若同一个ID存在多个不同的非空Status,方法一会返回最大值,需根据实际需求调整聚合函数(如
LASTNONBLANK取最后出现的有效值)
内容的提问来源于stack exchange,提问作者Dex
相关产品推荐
相关产品推荐

