我有一个表格模型,主要是星型模式,除了日期,它与事实表没有相关性 .
这样做的原因是所有报告都是快照报告,即StartDate和EndDate之间的selectedDate,即没有直接关系 .
在计算所有ID的不同计数时这很好,但是如果用户将列拖到数据透视表的行上,为了打破结果,excel会冻结一段时间,然后给出“内存错误:分配失败:分页文件太小了....“
为了优化,我在事实表上创建了许多计算列,一个用于度量中的每个过滤器,因此计算不必查询关系和维度 . 我可以为除日期列以外的所有人执行此操作 .
数据库不大,大约700mb,聚合的非重复计数不到4000行,所以结果集也不大,但我仍然得到内存不足的异常 .
计算如下 . 不幸的是,我无法分享完整的数据集:
CALCULATE (
countrows ( values('StudentResults' [StuIDNumber]) ),
FILTER (
'StudentResults',
(
'StudentResults'[CourseInstanceStartDate] <= MIN ( 'Date'[DateID] )
&& 'StudentResults'[CourseInstanceEndDate] >= MIN ( 'Date'[DateID] )
)
&& 'StudentResults'[CourseInstanceStatusCode] = "OPEN"
&& 'StudentResults'[StudentStartDateID] <> 19500101
&& 'StudentResults'[studentStatusCode] = "R"
&& 'StudentResults'[Session] >= 2014
)
)
我想知道如何让这个工作吗? (注意它适用于CountA()或Count,但distinctCount或countrows(values())会导致此问题 .
1 回答
我在虚拟表上使用
COUNTROWS
遇到了类似的问题,最后使用SUMX
.我之前已经看过几个关于这个问题的问题,OP表示它改善了性能,希望它对你有用 . [1]