2

我们在 MS SQL Server 2008 R2 中使用 SSAS 来存储带有公司数据的多维数据集。我们将此多维数据集用作 Web 应用程序中枢轴网格的数据源并生成“市场渗透”报告。

用户可以上传公司 ID 列表。ID 存储在数据库中。

当用户想要生成“市场渗透”报告时,他或她必须指定一个充当“选择”的列表和一个充当“市场”的列表。

提交后,两个列表的 ID 最终都成为多维数据集中的计算成员,使用如下 MDX 语句:

CREATE MEMBER [Prospects].[Measures].[selectids] AS COALESCEEMPTY(SUM( {
  [Dim Bedrijf].[BronId].&[1234], [Dim Bedrijf].[BronId].&[1235],
  ...., [Dim Bedrijf].[BronId].&[3456]}, [Measures].[Fact Bedrijven Count] ),0)

创建这些成员后,将创建更多用于计算报告中的指标(使用已在多维数据集中定义的成员和维度)。最后,还有一个返回必要数据的 select 语句。

当任一列表中的 ID 数量小于 100k 时,这可以正常工作。如果数字变大,我们就会开始出现超时错误。超时设置为 1 小时(报告在独立于 Web 应用程序的 win 服务中生成)。

我还是 SSAS 的新手,所以我想知道我们是否只是遇到了系统的边界,或者是否有任何方法可以提高效率?我们需要它来处理超过 1M 的记录,所以我们想知道这是否是要走的路。

希望我很清楚,但如果我不清楚,请告诉我。

4

1 回答 1

0

您遇到了 Analysis Services 的性能问题之一:过度使用计算成员,特别是如果您引用非常多的单个成员,会减慢查询时间。我建议您在[Dim Bedrijf]维度上创建另一个属性,将您在计算中拥有的那些成员分组。这将完全避免计算成员的需要,因为您只需选择适当的属性成员和基本度量[Measures].[Fact Bedrijven Count]。当然,这意味着在 ETL/关系建模方面需要付出更多努力。但它会在查询运行时以非常好的性能奖励您。

于 2013-10-10T16:19:10.403 回答