PowerBI:如何忽略FACT求和为零的行并保留全部列?
问题与解决方案
原始数据表
| ID | DIM1 | DIM2 | FACT | COMMENT |
|---|---|---|---|---|
| 1 | A | TEST | -5.00 | 应隐藏 |
| 2 | A | TEST | 5.00 | 也应隐藏 |
| 3 | B | ABC | -1.30 | 忽略备注 |
| 4 | B | ABC | 1.30 | 更多忽略备注 |
| 5 | C | TEST | 34.00 | 应显示 |
| 6 | A | TEST2 | -2.20 | 不显示 |
| 7 | A | TEST2 | 2.20 | 更多不显示 |
| 8 | B | ABCD | 7.20 | 应可见 |
| 9 | B | ABC | 1.30 | 可见 |
需求
忽略按DIM1、DIM2分组后FACT列求和为零的组内所有行,同时保留ID、COMMENT等全部列。
预期结果
| ID | DIM1 | DIM2 | FACT | COMMENT |
|---|---|---|---|---|
| 5 | C | TEST | 34 | 应显示 |
| 8 | B | ABCD | 7.20 | 应可见 |
| 9 | B | ABC | 1.30 | 可见 |
现有Power Query实现思路
按DIM1/DIM2分组计算FACT总和,筛选总和非零的组后关联原表,找回ID、COMMENT等列。
DAX替代方案
方案1:创建计算表
直接生成符合要求的结果表,步骤为先计算每组总和,筛选有效组,再关联原表保留所有列:
筛选后表 = VAR 分组总和 = SUMMARIZE( '原始表', '原始表'[DIM1], '原始表'[DIM2], "组FACT总和", SUM('原始表'[FACT]) ) VAR 有效组 = FILTER(分组总和, [组FACT总和] <> 0) RETURN NATURALLEFTOUTERJOIN('原始表', 有效组)
方案2:添加计算列标记有效行
如果需要保留原表结构,仅标记可显示的行,可添加如下计算列,之后筛选该列值为TRUE的行即可:
是否显示 = VAR 当前组总和 = CALCULATE( SUM('原始表'[FACT]), ALLEXCEPT('原始表', '原始表'[DIM1], '原始表'[DIM2]) ) RETURN 当前组总和 <> 0
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

