Power BI筛选正销售额或2019年后开户项目的DAX优化问题
Power BI 筛选需求解决方案
方案1:Power Query 内置筛选(性能最优,无需写代码)
- 打开Power Query编辑器,选中
Matter Detail表 - 依次点击【开始】选项卡>【筛选器】>【高级筛选】
- 按如下规则设置筛选条件:
- 条件1:
Sales列 > 0,逻辑关系选择「或」 - 条件2:
OpenDate列 > 2019/1/1
- 条件1:
- 确认后应用更改,即可直接得到符合要求的3条数据,无内存不足问题。
方案2:修复DAX代码
原代码报错原因:使用了MAX聚合逻辑,若作为度量值放在未按项目分组的明细表格中,会触发全表逐行聚合计算,数据量稍大就会出现内存不足问题。
优先推荐用计算列实现(逐行判断无需聚合)
新建计算列,代码如下:
符合筛选条件 = IF( 'Matter Detail'[Sales] > 0 || 'Matter Detail'[OpenDate] > DATE(2019,1,1), "是", "否" )
后续筛选该计算列为「是」即可得到目标结果。
若需使用度量值实现
需确保表格上下文已按matter字段分组,度量值代码如下:
NewerMatter = VAR 当前项目最大开单日期 = MAX('Matter Detail'[OpenDt]) VAR 当前项目销售总额 = SUM('Matter Detail'[Sales]) RETURN IF( 当前项目销售总额 > 0 || 当前项目最大开单日期 > DATE(2019,1,1), 1, 0 )
使用时筛选该度量值等于1即可,不会触发内存溢出。
内容的提问来源于stack exchange,提问作者zac
相关产品推荐
相关产品推荐

