首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用SSAS表格模型在Excel PivotTable中高效显示顶N

利用SSAS表格模型在Excel PivotTable中高效显示顶N
EN

Stack Overflow用户
提问于 2014-10-16 12:08:49
回答 1查看 1.3K关注 0票数 2

我有一个简单的表格模型,由一个大约是事实表组成。20米。记录(销售事务)和约600.000条记录(客户)的维度表。

一个典型的报告场景是通过事实表中的某些度量获取前10名客户,可能会被其他一些标准(通常是时间段、产品等)过滤。

在Excel中,汇总所有的20兆。记录返回的总销售额是即时的。但是,一旦我尝试按客户分组,检索所有数据需要一些时间(15-20秒),这是有意义的,因为需要显示大量的客户(600.000)。

现在,如果我在Excel中应用一个值过滤器,只获得前十名客户,返回结果仍然需要大约15-20秒,这对我的用户来说是不可接受的(因为他们希望立即看到前10位客户,同时对产品、时间等其他属性进行切片)。

在内部,Excel在使用值筛选器查询表格模型时使用TOPCOUNT MDX-函数.

在表格模型中,我能做些什么来加速这些查询吗?

我试过:

  • 在维度表上创建计算列,其中包含每个客户的总销售额。虽然性能更好,但这并不是一条出路,因为本列中的值不能被事实中的其他属性分割,而且该列显然包含了许多不同的值(这在表格中是一件坏事)。
  • 使用建议的RANKX函数在事实表上创建计算的度量。这导致我的表格实例崩溃(维度表中的记录太多了?)
  • 使用DAX TOPN函数直接在表格模型上执行一个简单的DAX语句。这甚至比TOPCOUNT MDX方法慢3-4倍.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-27 11:26:37

在搜索了更多的web并执行了额外的测试之后,我得出结论: SSAS表格在未过滤的上下文中回答TOPCOUNT/RANK类查询本质上是不好的。原因似乎很简单:

如果我有一个包含600.000个客户的维度,并且在一个未经过滤的上下文中按销售额要求获得前10名,那么表格引擎需要计算每个客户的销售额之和,然后才能对前10位或每个客户的排名进行排序和返回。

在多维OLAP中,数据通常是预先聚合在pr上的。客户级别,这意味着多维多维数据集能够更快地回答这类查询。

在SSAS表格中应用一个或多个过滤器(例如,当前月份、特定产品等)时,我看到了显著的性能提高。在我的例子中,解决方案是教育我的用户在将客户维度包括在他们的PivotTables中之前总是过滤他们的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26404036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档