Ssas 大数据集上的慢速不同计数

Ssas 大数据集上的慢速不同计数,ssas,Ssas,我有一个立方体,其中有一个关于在线客户订单的事实表。每行包含一个basketID和一个customerID。然后可以有多行相同的basketID/customerID以及篮子中项目的另一个ID 我的数据集中不同的basketIDs的数量接近3200万。因此,作为物理上不同的计数,性能非常慢,特别是当我引入维度层次结构时 我想知道是否有人对如何提高性能有什么建议。我一直在对聚合进行基于使用率的优化,这有助于一点一点地进行优化,但没有产生太大的影响。我不认为我能做到多对多,因为虽然一个客户可以有多个

我有一个立方体,其中有一个关于在线客户订单的事实表。每行包含一个
basketID
和一个
customerID
。然后可以有多行相同的
basketID
/
customerID
以及篮子中项目的另一个ID

我的数据集中不同的
basketID
s的数量接近3200万。因此,作为物理上不同的计数,性能非常慢,特别是当我引入维度层次结构时

我想知道是否有人对如何提高性能有什么建议。我一直在对聚合进行基于使用率的优化,这有助于一点一点地进行优化,但没有产生太大的影响。我不认为我能做到多对多,因为虽然一个客户可以有多个篮子,但一个篮子不能有多个客户(如果错误,请纠正我)。服务器上128GB的物理RAM正常。篮子ID的独立计数大约为一分钟,一些更复杂的深入查询可能需要2.5-5分钟


我已经用光了谷歌,开始怀疑由于数据量太大,我是否只能勉强应付这一缓慢的统计,但我想知道是否还有其他人有办法?

我建议阅读这些白皮书和帖子。您可以研究它所描述的优化,比如具有不重叠的basketid范围的分区

这篇老文章描述了不同计数的SSD的性能增益:

基于3200万个不同的BasketId,我将删除您构建的所有聚合。不同计数度量的AGG不同。对于具有5年数据的数据集上的总和度量,年度agg仅为5行。但是对于不同的计数度量,年度agg将每年为每个不同的计数值存储一行。所以它不会比原始事实表小很多


如果basketID不是一个bigint,我会想办法让它成为bigint,因为这将有助于提高性能

我知道这篇文章是三年多前写的,但在我研究同一个问题时,马可·鲁索(Marco Russo)提到了SUMX和DISTINCT的结合。将此逻辑应用到我的多维数据集后,查询时间显示出显著的改进,从一个可能超时的查询到几秒钟内完成的查询,并返回相同的结果。

什么版本的SSAS?如果您在SSMS对象资源管理器中连接,您在SSAS的服务器节点中看到的确切版本号是多少?请描述您的硬件?有多少内核和什么类型的磁盘?固态硬盘?如果旋转磁盘有多少个轴?SSAS版本:11.0339.0内核:12高清:不是SSD,但目前恐怕没有更多的信息。你能再检查一下那个版本号吗。也许是11.0.3393?检查这里,然后考虑升级到最新的服务包,甚至最新的累积更新。有许多修复程序可能会影响性能。对不起,是的,胖手指,它是11.0.3339.0。谢谢,我最初选择的分区策略是按周。每周都是26或27周一组学期的成员(由业务逻辑选择)。由于业务的季节性,不同篮子的数量可能非常不均衡。大多数周的篮筐数约为60万个,但偶尔会出现700-1000千个篮筐的峰值。在阅读了这些链接之后,时间*篮筐可能是一个不错的选择。我将创建主分区,然后在篮子ID上切片。由于我有12个内核,我从读取的数据推断12个切片将是最佳的。我会回来的。@TJB听起来你的思路是对的。如果所有95%的查询都是按学期过滤的,或是按行过滤,但没有得到一个总数,那么学期划分就很有意义了。你只需要尝试不同的策略,看看哪种策略最适合你的工作量。它可能只是篮子范围划分(没有学期)是最好的。或者也许这学期篮球队最好。