PowerBI中计算关联列空白值数量的计算列问题
解决PowerBI中统计指定表各列空白值数量的问题
原公式的问题
你写的DAX公式逻辑有误:ISBLANK('Table2'[Column_Name])是在判断Table2里的列名字符串本身是否空白,而不是判断Table1中对应列的单元格值是否空白,这就导致筛选条件永远不成立,结果自然全为空。
解决方案一:DAX计算列
在Table2中创建计算列,通过动态引用Table1的对应列来统计空白值:
公式1(COUNTROWS+FILTER)
No_of_blanks = VAR CurrentCol = 'Table2'[Column_Name] RETURN COUNTROWS( FILTER( 'Table1', ISBLANK( SELECTCOLUMNS('Table1', "TargetCol", [@CurrentCol])[TargetCol] ) ) )
公式2(SUMX简化版)
No_of_blanks = VAR TargetColName = 'Table2'[Column_Name] RETURN SUMX( 'Table1', INT( ISBLANK( SELECTCOLUMNS('Table1', "Val", [@TargetColName])[Val] ) ) )
原理说明:
VAR定义当前行的列名字符串SELECTCOLUMNS('Table1', "Val", [@TargetColName])根据字符串动态提取Table1的对应列ISBLANK判断该列单元格是否空白,INT将布尔值转成1(空白)或0(非空白),SUMX求和得到总空白数
解决方案二:PowerQuery直接生成统计结果
如果不想用DAX,可直接在PowerQuery中完成统计,步骤更简单:
- 进入PowerQuery编辑器,加载Table1
- 点击转换选项卡 → 转置,将原表的列转为行
- 添加自定义列,输入公式:
List.Count(List.Select([Column1], each _ = null)) - 重命名列:将第一列改为
Column_Name,自定义列改为No_of_blanks - 关闭并上载到数据模型,直接得到统计完成的表
注意事项
- 确保Table2的
Column_Name列值与Table1的列名完全一致(包括大小写、特殊字符),否则动态引用会失败 - 若Table1是实时连接/DirectQuery模式,DAX动态引用可能有性能损耗,优先选择PowerQuery方案
内容的提问来源于stack exchange,提问作者user15180012
相关产品推荐
相关产品推荐

