什么是最有效的方法来计算运行的总消费量在Sql服务器分析的服务?

StackOverflow https://stackoverflow.com/questions/445299

  •  22-07-2019
  •  | 
  •  

我有一个立方体在SSA2005年,计算运行的款项超过百万的记录。目前的实施是使用PeriodsToDate和功能在MDX这是非常缓慢,服15分钟或更多时间来回,结果在某些情况下。还有数量巨大的这个问题的解决方案所以我希望有人已经试验了一些出和可以救我的时间实施和测试的每一个。

是它比较好的计算运行的款项和滑动窗口类型计算在T-SQL使用标(请没有加入交叉解决方案,从Celko,我知道他们看起来不错在纸面上,而交叉参加的解决方案是可怕慢,因为你的数据的增长),使用一个脚本任务在SSIS(或者是有更好的方式来做到这一体化服务),或使用中的分析服务?

任何其他想法吗?

有帮助吗?

解决方案

我花了点时间来弄清楚这一点,在那里它会与工作和没有一个层次上的时间的维度。根据我的数据和我的立方体结构,这里就是我放在一起:

with member [Measures].[RunningTotal] as 
'sum({[Deferred Revenue Date].[Standard Calendar].CurrentMember.Level.Item(0):[Deferred Revenue Date].[Standard Calendar].CurrentMember}, [Measures].[Deferred Revenue Amount])'
select
    {[Measures].[Deferred Revenue Amount]
    ,[Measures].[RunningTotal]
    } on columns,
    nonempty([Deferred Revenue Date].[Standard Calendar].[Date], [Measures].[Deferred Revenue Amount]) on rows
from
DW;

一招是非空()条款只会返回值计算测量柱,如果有的交叉口与维和的措施。没有它,你就会得到一堆空中的测量柱和一堆重复的价值观在计算测量柱。这实际上是一个非常方便查询。

计算出的成员会的工作,无论水平指定的选择声明,它日期、月或一年。在我的情况下,我试着日期来接近我可以向你们试图要做。我写了一个查询类似于你对我的立方体,它跑了43秒钟。这个新的一个运行在大约2秒,我们有相当多的数据,所以它应该跑得更快对你也是如此,假设你有聚合,建立,等等。

该问题与MDX是没有像十八个方法可以做到的东西只有一个或两个将运行良好。

好运气。

其他提示

MDX我目前正在使用的是非常缓慢,在这里它是。


Sum
(
PeriodsToDate([Date of Transaction].[Date].[(All)], [Date of Transaction].[Date].CurrentMember), [Measures].[Amount - Response]
)

我可以看到最有效的方式这样做的总运行,利用立体聚集。这个想法是让所有前成员+总和(父母。firstsibling:父母。上一个成员,衡量)+总和(父母。父母。firstsibling:父母。父母。prevmember,测量)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top