在SSAS中慢慢改变尺寸

时间:2012-07-31 21:18:52

标签: sql-server-2008 ssas

我正在尝试设计一个多维数据集,让我可以看一下过去几年使用SSAS的月收入。我使用Type 2 SCD构建了收益事实表,结果如下表所示:

Account Number     MonthlyPayment     Start Date     End Date
102939              115               01/01/2001     03/31/2001
102939              75                04/01/2001     NULL
102940              107               02/01/2001     NULL

现在,我正在试图找出每个月的每月收入,例如:

01/01: 115 
02/01: 222 
05/01: 182

我已经构建了一个多维数据集,但它只报告特定月份的收入,因为它在开始日期链接,例如。

01/01: 115
02/01: 107
02/01: 0 
04/01: 75

显然我错过了一些东西,因为在SSIS中构建事实表之后我能找到的所有链接都停止了,并且似乎暗示一旦数据格式正确,这是一块蛋糕。我是否需要编写MDX计算度量,如果是,如何?或者是否有一些我应该看的更简单的东西。

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

这不是一个简单的电话。

您希望在单元格级别(也称为行级别)定义一种新类型,即付款(金额,开始,结束),当汇总时会计算日期以计算金额。

OLAP多维数据集不是为解决这类问题而设计的,因为它们只聚合基本类型(double,int,booleans ......)。我不知道有任何供应商在这个时候做这件事。

标准方法是每月添加金额:

Account Number     MonthlyPayment     Date     
102939              115               01/01/2001
102939              115               02/01/2001
102939              115               03/01/2001
102939              75                04/01/2001
...
102940              107               02/01/2001
102940              107               03/01/2001
102940              107               04/01/2001
...

此解决方案的问题是原始行数与新行(内存)的数量以及如何生成“新”表。

另一个是找到可以与您合作的供应商,以便更好地解决此问题,如果SSAS不是必须的话。

答案 1 :(得分:0)

您添加包含所有日期的时间维度,即使事实表未使用它们也是如此。 SSAS allows you to generate a Time dimension,其中包含您可以在MDX查询中使用的月份列。

对不起,我没有完全理解你所定义的问题。 我认为你必须将表非规范化为

Account Number     PaymentAmount     Payment Date     
102939              115               01/01/2001     
102939              115               02/01/2001     
102939              115               03/01/2001     
102939              75                04/01/2001     
102940              107               02/01/2001     

最终将以表格大小为代价简化计算。